bmalloc: Renamed LargeChunk => Chunk
[WebKit-https.git] / Source / bmalloc / bmalloc / LargeObject.h
index 58bf275..70d91b2 100644 (file)
 #define LargeObject_h
 
 #include "BeginTag.h"
+#include "Chunk.h"
 #include "EndTag.h"
-#include "LargeChunk.h"
 #include "Range.h"
 
 namespace bmalloc {
 
 class LargeObject {
 public:
-    static Range init(LargeChunk*);
-
     LargeObject();
     LargeObject(void*);
 
@@ -87,16 +85,16 @@ inline LargeObject::LargeObject()
 }
 
 inline LargeObject::LargeObject(void* object)
-    : m_beginTag(LargeChunk::beginTag(object))
-    , m_endTag(LargeChunk::endTag(object, m_beginTag->size()))
+    : m_beginTag(Chunk::beginTag(object))
+    , m_endTag(Chunk::endTag(object, m_beginTag->size()))
     , m_object(object)
 {
     validate();
 }
 
 inline LargeObject::LargeObject(DoNotValidateTag, void* object)
-    : m_beginTag(LargeChunk::beginTag(object))
-    , m_endTag(LargeChunk::endTag(object, m_beginTag->size()))
+    : m_beginTag(Chunk::beginTag(object))
+    , m_endTag(Chunk::endTag(object, m_beginTag->size()))
     , m_object(object)
 {
 }
@@ -196,7 +194,7 @@ inline LargeObject LargeObject::merge() const
         prev->clear();
         beginTag->clear();
 
-        beginTag = LargeChunk::beginTag(range.begin());
+        beginTag = Chunk::beginTag(range.begin());
     }
 
     BeginTag* next = endTag->next();
@@ -208,7 +206,7 @@ inline LargeObject LargeObject::merge() const
         endTag->clear();
         next->clear();
 
-        endTag = LargeChunk::endTag(range.begin(), range.size());
+        endTag = Chunk::endTag(range.begin(), range.size());
     }
 
     beginTag->setRange(range);
@@ -221,14 +219,15 @@ inline LargeObject LargeObject::merge() const
 
 inline std::pair<LargeObject, LargeObject> LargeObject::split(size_t size) const
 {
+    BASSERT(size <= this->size());
     Range split(begin(), size);
     Range leftover = Range(split.end(), this->size() - size);
     BASSERT(leftover.size() >= largeMin);
 
     BeginTag* splitBeginTag = m_beginTag;
-    EndTag* splitEndTag = LargeChunk::endTag(split.begin(), size);
+    EndTag* splitEndTag = Chunk::endTag(split.begin(), size);
 
-    BeginTag* leftoverBeginTag = LargeChunk::beginTag(leftover.begin());
+    BeginTag* leftoverBeginTag = Chunk::beginTag(leftover.begin());
     EndTag* leftoverEndTag = m_endTag;
 
     splitBeginTag->setRange(split);
@@ -271,33 +270,6 @@ inline void LargeObject::validate() const
     }
 }
 
-inline Range LargeObject::init(LargeChunk* chunk)
-{
-    Range range(chunk->begin(), chunk->end() - chunk->begin());
-
-    BeginTag* beginTag = LargeChunk::beginTag(range.begin());
-    beginTag->setRange(range);
-    beginTag->setFree(true);
-    beginTag->setVMState(VMState::Virtual);
-
-    EndTag* endTag = LargeChunk::endTag(range.begin(), range.size());
-    endTag->init(beginTag);
-
-    // Mark the left and right edges of our chunk as allocated. This naturally
-    // prevents merging logic from overflowing beyond our chunk, without requiring
-    // special-case checks.
-    
-    EndTag* leftSentinel = beginTag->prev();
-    BASSERT(leftSentinel >= static_cast<void*>(chunk));
-    leftSentinel->initSentinel();
-
-    BeginTag* rightSentinel = endTag->next();
-    BASSERT(rightSentinel < static_cast<void*>(range.begin()));
-    rightSentinel->initSentinel();
-    
-    return range;
-}
-
 } // namespace bmalloc
 
 #endif // LargeObject_h