summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/wtf/Bitmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/wtf/Bitmap.h')
-rw-r--r--Source/JavaScriptCore/wtf/Bitmap.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/Bitmap.h b/Source/JavaScriptCore/wtf/Bitmap.h
index b046b61..9ee7f4a 100644
--- a/Source/JavaScriptCore/wtf/Bitmap.h
+++ b/Source/JavaScriptCore/wtf/Bitmap.h
@@ -40,6 +40,7 @@ public:
size_t nextPossiblyUnset(size_t) const;
void clear(size_t);
void clearAll();
+ int64_t findRunOfZeros(size_t) const;
size_t count(size_t = 0) const;
size_t isEmpty() const;
size_t isFull() const;
@@ -107,6 +108,26 @@ inline size_t Bitmap<size>::nextPossiblyUnset(size_t start) const
}
template<size_t size>
+inline int64_t Bitmap<size>::findRunOfZeros(size_t runLength) const
+{
+ if (!runLength)
+ runLength = 1;
+
+ for (size_t i = 0; i <= (size - runLength) ; i++) {
+ bool found = true;
+ for (size_t j = i; j <= (i + runLength - 1) ; j++) {
+ if (get(j)) {
+ found = false;
+ break;
+ }
+ }
+ if (found)
+ return i;
+ }
+ return -1;
+}
+
+template<size_t size>
inline size_t Bitmap<size>::count(size_t start) const
{
size_t result = 0;