Index: third_party/WebKit/Source/platform/heap/SparseHeapBitmap.cpp |
diff --git a/third_party/WebKit/Source/platform/heap/SparseHeapBitmap.cpp b/third_party/WebKit/Source/platform/heap/SparseHeapBitmap.cpp |
deleted file mode 100644 |
index 6a47decbd3630b70c6aadc991bbe5881b96611d0..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/platform/heap/SparseHeapBitmap.cpp |
+++ /dev/null |
@@ -1,111 +0,0 @@ |
-// Copyright 2016 The Chromium 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 "platform/heap/SparseHeapBitmap.h" |
- |
-#include "wtf/PtrUtil.h" |
- |
-namespace blink { |
- |
-// Return the subtree/bitmap that covers the |
-// [address, address + size) range. Null if there is none. |
-SparseHeapBitmap* SparseHeapBitmap::hasRange(Address address, size_t size) { |
- DCHECK(!(reinterpret_cast<uintptr_t>(address) & s_pointerAlignmentMask)); |
- SparseHeapBitmap* bitmap = this; |
- while (bitmap) { |
- // Interval starts after, |m_right| handles. |
- if (address > bitmap->end()) { |
- bitmap = bitmap->m_right.get(); |
- continue; |
- } |
- // Interval starts within, |bitmap| is included in the resulting range. |
- if (address >= bitmap->base()) |
- break; |
- |
- Address right = address + size - 1; |
- // Interval starts before, but intersects with |bitmap|'s range. |
- if (right >= bitmap->base()) |
- break; |
- |
- // Interval is before entirely, for |m_left| to handle. |
- bitmap = bitmap->m_left.get(); |
- } |
- return bitmap; |
-} |
- |
-bool SparseHeapBitmap::isSet(Address address) { |
- DCHECK(!(reinterpret_cast<uintptr_t>(address) & s_pointerAlignmentMask)); |
- SparseHeapBitmap* bitmap = this; |
- while (bitmap) { |
- if (address > bitmap->end()) { |
- bitmap = bitmap->m_right.get(); |
- continue; |
- } |
- if (address >= bitmap->base()) { |
- if (bitmap->m_bitmap) { |
- return bitmap->m_bitmap->test((address - bitmap->base()) >> |
- s_pointerAlignmentInBits); |
- } |
- DCHECK(address == bitmap->base()); |
- DCHECK_EQ(bitmap->size(), 1u); |
- return true; |
- } |
- bitmap = bitmap->m_left.get(); |
- } |
- return false; |
-} |
- |
-void SparseHeapBitmap::add(Address address) { |
- DCHECK(!(reinterpret_cast<uintptr_t>(address) & s_pointerAlignmentMask)); |
- // |address| is beyond the maximum that this SparseHeapBitmap node can |
- // encompass. |
- if (address >= maxEnd()) { |
- if (!m_right) { |
- m_right = SparseHeapBitmap::create(address); |
- return; |
- } |
- m_right->add(address); |
- return; |
- } |
- // Same on the other side. |
- if (address < minStart()) { |
- if (!m_left) { |
- m_left = SparseHeapBitmap::create(address); |
- return; |
- } |
- m_left->add(address); |
- return; |
- } |
- if (address == base()) |
- return; |
- // |address| can be encompassed by |this| by expanding its size. |
- if (address > base()) { |
- if (!m_bitmap) |
- createBitmap(); |
- m_bitmap->set((address - base()) >> s_pointerAlignmentInBits); |
- return; |
- } |
- // Use |address| as the new base for this interval. |
- Address oldBase = swapBase(address); |
- createBitmap(); |
- m_bitmap->set((oldBase - address) >> s_pointerAlignmentInBits); |
-} |
- |
-void SparseHeapBitmap::createBitmap() { |
- DCHECK(!m_bitmap && size() == 1); |
- m_bitmap = WTF::makeUnique<std::bitset<s_bitmapChunkSize>>(); |
- m_size = s_bitmapChunkRange; |
- m_bitmap->set(0); |
-} |
- |
-size_t SparseHeapBitmap::intervalCount() const { |
- size_t count = 1; |
- if (m_left) |
- count += m_left->intervalCount(); |
- if (m_right) |
- count += m_right->intervalCount(); |
- return count; |
-} |
- |
-} // namespace blink |