Diff
Modified: trunk/Source/bmalloc/CMakeLists.txt (254302 => 254303)
--- trunk/Source/bmalloc/CMakeLists.txt 2020-01-09 22:57:24 UTC (rev 254302)
+++ trunk/Source/bmalloc/CMakeLists.txt 2020-01-09 22:57:39 UTC (rev 254303)
@@ -16,6 +16,7 @@
bmalloc/FreeList.cpp
bmalloc/Gigacage.cpp
bmalloc/Heap.cpp
+ bmalloc/HeapConstants.cpp
bmalloc/HeapKind.cpp
bmalloc/IsoHeapImpl.cpp
bmalloc/IsoPage.cpp
@@ -70,6 +71,7 @@
bmalloc/FreeListInlines.h
bmalloc/Gigacage.h
bmalloc/Heap.h
+ bmalloc/HeapConstants.h
bmalloc/HeapKind.h
bmalloc/IsoAllocator.h
bmalloc/IsoAllocatorInlines.h
Modified: trunk/Source/bmalloc/ChangeLog (254302 => 254303)
--- trunk/Source/bmalloc/ChangeLog 2020-01-09 22:57:24 UTC (rev 254302)
+++ trunk/Source/bmalloc/ChangeLog 2020-01-09 22:57:39 UTC (rev 254303)
@@ -1,3 +1,38 @@
+2020-01-09 Basuke Suzuki <[email protected]>
+
+ [bmalloc] Extract constants from Heap and share it among Heaps.
+ https://bugs.webkit.org/show_bug.cgi?id=205834
+
+ Reviewed by Geoffrey Garen.
+
+ A Heap has many constants (m_vmPageSizePhysical, m_smallLineMetadata and m_pageClasses) and they
+ are dependent only to vmPageSizePhysical and identical for all Heaps.
+
+ Extracting them into a class and make it sharable among heaps. Also this is the first step for
+ making Heap constants to actual `constexpr`.
+
+ * CMakeLists.txt: Added HeapConstants.cpp.
+ * bmalloc.xcodeproj/project.pbxproj: Ditto.
+ * bmalloc/Heap.cpp: Referencing HeapConstants object to get information.
+ (bmalloc::Heap::Heap):
+ (bmalloc::Heap::allocateSmallPage):
+ (bmalloc::Heap::deallocateSmallLine):
+ (bmalloc::Heap::allocateSmallBumpRangesByMetadata):
+ (bmalloc::Heap::allocateSmallBumpRangesByObject):
+ (bmalloc::Heap::initializeLineMetadata): Moved to HeapConstants.cpp.
+ (bmalloc::Heap::initializePageMetadata): Moved to HeapConstants.cpp.
+ * bmalloc/Heap.h: Extract metadata initialization and member variables.
+ * bmalloc/HeapConstants.cpp: Added.
+ (bmalloc::HeapConstants::HeapConstants):
+ (bmalloc::HeapConstants::initializeLineMetadata):
+ (bmalloc::HeapConstants::initializePageMetadata):
+ * bmalloc/HeapConstants.h:
+ (bmalloc::HeapConstants::pageClass const):
+ (bmalloc::HeapConstants::smallLineCount const):
+ (bmalloc::HeapConstants::startOffset):
+ (bmalloc::HeapConstants::objectCount):
+ (bmalloc::HeapConstants::lineMetadata):
+
2020-01-02 Yusuke Suzuki <[email protected]> and Simon Fraser <[email protected]>
Experiment: create lots of different malloc zones for easier accounting of memory use
Modified: trunk/Source/bmalloc/bmalloc/Heap.cpp (254302 => 254303)
--- trunk/Source/bmalloc/bmalloc/Heap.cpp 2020-01-09 22:57:24 UTC (rev 254302)
+++ trunk/Source/bmalloc/bmalloc/Heap.cpp 2020-01-09 22:57:39 UTC (rev 254303)
@@ -30,9 +30,10 @@
#include "BumpAllocator.h"
#include "Chunk.h"
#include "CryptoRandom.h"
+#include "DebugHeap.h"
#include "Environment.h"
#include "Gigacage.h"
-#include "DebugHeap.h"
+#include "HeapConstants.h"
#include "PerProcess.h"
#include "Scavenger.h"
#include "SmallLine.h"
@@ -45,15 +46,8 @@
namespace bmalloc {
Heap::Heap(HeapKind kind, std::lock_guard<Mutex>&)
- : m_kind(kind)
- , m_vmPageSizePhysical(vmPageSizePhysical())
+ : m_kind { kind }, m_constants { *HeapConstants::get() }
{
- RELEASE_BASSERT(vmPageSizePhysical() >= smallPageSize);
- RELEASE_BASSERT(vmPageSize() >= vmPageSizePhysical());
-
- initializeLineMetadata();
- initializePageMetadata();
-
BASSERT(!Environment::get()->isDebugHeapEnabled());
Gigacage::ensureGigacage();
@@ -87,62 +81,6 @@
return Gigacage::size(gigacageKind(m_kind));
}
-void Heap::initializeLineMetadata()
-{
- size_t sizeClassCount = bmalloc::sizeClass(smallLineSize);
- size_t smallLineCount = m_vmPageSizePhysical / smallLineSize;
- m_smallLineMetadata.grow(sizeClassCount * smallLineCount);
-
- for (size_t sizeClass = 0; sizeClass < sizeClassCount; ++sizeClass) {
- size_t size = objectSize(sizeClass);
- LineMetadata* pageMetadata = &m_smallLineMetadata[sizeClass * smallLineCount];
-
- size_t object = 0;
- size_t line = 0;
- while (object < m_vmPageSizePhysical) {
- line = object / smallLineSize;
- size_t leftover = object % smallLineSize;
-
- size_t objectCount;
- size_t remainder;
- divideRoundingUp(smallLineSize - leftover, size, objectCount, remainder);
-
- pageMetadata[line] = { static_cast<unsigned char>(leftover), static_cast<unsigned char>(objectCount) };
-
- object += objectCount * size;
- }
-
- // Don't allow the last object in a page to escape the page.
- if (object > m_vmPageSizePhysical) {
- BASSERT(pageMetadata[line].objectCount);
- --pageMetadata[line].objectCount;
- }
- }
-}
-
-void Heap::initializePageMetadata()
-{
- auto computePageSize = [&](size_t sizeClass) {
- size_t size = objectSize(sizeClass);
- if (sizeClass < bmalloc::sizeClass(smallLineSize))
- return m_vmPageSizePhysical;
-
- for (size_t pageSize = m_vmPageSizePhysical;
- pageSize < pageSizeMax;
- pageSize += m_vmPageSizePhysical) {
- RELEASE_BASSERT(pageSize <= chunkSize / 2);
- size_t waste = pageSize % size;
- if (waste <= pageSize / pageSizeWasteFactor)
- return pageSize;
- }
-
- return pageSizeMax;
- };
-
- for (size_t i = 0; i < sizeClassCount; ++i)
- m_pageClasses[i] = (computePageSize(i) - 1) / smallPageSize;
-}
-
size_t Heap::freeableMemory(std::lock_guard<Mutex>&)
{
return m_freeableMemory;
@@ -342,7 +280,7 @@
m_scavenger->didStartGrowing();
SmallPage* page = [&]() -> SmallPage* {
- size_t pageClass = m_pageClasses[sizeClass];
+ size_t pageClass = m_constants.pageClass(sizeClass);
if (m_freePages[pageClass].isEmpty())
allocateSmallChunk(lock, pageClass, action);
@@ -399,8 +337,7 @@
if (page->refCount(lock))
return;
- size_t sizeClass = page->sizeClass();
- size_t pageClass = m_pageClasses[sizeClass];
+ size_t pageClass = m_constants.pageClass(page->sizeClass());
m_freeableMemory += physicalPageSizeSloppy(page->begin()->begin(), pageSize(pageClass));
@@ -440,13 +377,11 @@
}
SmallLine* lines = page->begin();
BASSERT(page->hasFreeLines(lock));
- size_t smallLineCount = m_vmPageSizePhysical / smallLineSize;
- LineMetadata* pageMetadata = &m_smallLineMetadata[sizeClass * smallLineCount];
-
+
auto findSmallBumpRange = [&](size_t& lineNumber) {
- for ( ; lineNumber < smallLineCount; ++lineNumber) {
+ for ( ; lineNumber < m_constants.smallLineCount(); ++lineNumber) {
if (!lines[lineNumber].refCount(lock)) {
- if (pageMetadata[lineNumber].objectCount)
+ if (m_constants.objectCount(sizeClass, lineNumber))
return true;
}
}
@@ -454,18 +389,19 @@
};
auto allocateSmallBumpRange = [&](size_t& lineNumber) -> BumpRange {
- char* begin = lines[lineNumber].begin() + pageMetadata[lineNumber].startOffset;
+ char* begin = lines[lineNumber].begin() + m_constants.startOffset(sizeClass, lineNumber);
unsigned short objectCount = 0;
- for ( ; lineNumber < smallLineCount; ++lineNumber) {
+ for ( ; lineNumber < m_constants.smallLineCount(); ++lineNumber) {
if (lines[lineNumber].refCount(lock))
break;
- if (!pageMetadata[lineNumber].objectCount)
+ auto lineObjectCount = m_constants.objectCount(sizeClass, lineNumber);
+ if (!lineObjectCount)
continue;
- objectCount += pageMetadata[lineNumber].objectCount;
- lines[lineNumber].ref(lock, pageMetadata[lineNumber].objectCount);
+ objectCount += lineObjectCount;
+ lines[lineNumber].ref(lock, lineObjectCount);
page->ref(lock);
}
return { begin, objectCount };
@@ -533,7 +469,7 @@
};
Object it(page->begin()->begin());
- Object end(it + pageSize(m_pageClasses[sizeClass]));
+ Object end(it + pageSize(m_constants.pageClass(page->sizeClass())));
for (;;) {
if (!findSmallBumpRange(it, end)) {
page->setHasFreeLines(lock, false);
Modified: trunk/Source/bmalloc/bmalloc/Heap.h (254302 => 254303)
--- trunk/Source/bmalloc/bmalloc/Heap.h 2020-01-09 22:57:24 UTC (rev 254302)
+++ trunk/Source/bmalloc/bmalloc/Heap.h 2020-01-09 22:57:39 UTC (rev 254303)
@@ -31,7 +31,6 @@
#include "FailureAction.h"
#include "HeapKind.h"
#include "LargeMap.h"
-#include "LineMetadata.h"
#include "List.h"
#include "Map.h"
#include "Mutex.h"
@@ -41,7 +40,6 @@
#include "PhysicalPageMap.h"
#include "SmallLine.h"
#include "SmallPage.h"
-#include "Vector.h"
#include <array>
#include <condition_variable>
#include <mutex>
@@ -54,6 +52,7 @@
class BumpAllocator;
class DebugHeap;
class EndTag;
+class HeapConstants;
class Scavenger;
class Heap {
@@ -110,9 +109,6 @@
bool usingGigacage();
void* gigacageBasePtr(); // May crash if !usingGigacage().
size_t gigacageSize();
-
- void initializeLineMetadata();
- void initializePageMetadata();
void allocateSmallBumpRangesByMetadata(std::unique_lock<Mutex>&,
size_t sizeClass, BumpAllocator&, BumpRangeCache&, LineCache&, FailureAction);
@@ -132,14 +128,11 @@
LargeRange splitAndAllocate(std::unique_lock<Mutex>&, LargeRange&, size_t alignment, size_t);
HeapKind m_kind;
+ HeapConstants& m_constants;
bool m_hasPendingDecommits { false };
std::condition_variable_any m_condition;
- size_t m_vmPageSizePhysical;
- Vector<LineMetadata> m_smallLineMetadata;
- std::array<size_t, sizeClassCount> m_pageClasses;
-
LineCache m_lineCache;
std::array<List<Chunk>, pageClassCount> m_freePages;
std::array<List<Chunk>, pageClassCount> m_chunkCache;
Added: trunk/Source/bmalloc/bmalloc/HeapConstants.cpp (0 => 254303)
--- trunk/Source/bmalloc/bmalloc/HeapConstants.cpp (rev 0)
+++ trunk/Source/bmalloc/bmalloc/HeapConstants.cpp 2020-01-09 22:57:39 UTC (rev 254303)
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2014-2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "HeapConstants.h"
+
+namespace bmalloc {
+
+DEFINE_STATIC_PER_PROCESS_STORAGE(HeapConstants);
+
+HeapConstants::HeapConstants(std::lock_guard<Mutex>&)
+ : m_vmPageSizePhysical { vmPageSizePhysical() }
+{
+ RELEASE_BASSERT(m_vmPageSizePhysical >= smallPageSize);
+ RELEASE_BASSERT(vmPageSize() >= m_vmPageSizePhysical);
+
+ initializeLineMetadata();
+ initializePageMetadata();
+}
+
+void HeapConstants::initializeLineMetadata()
+{
+ size_t sizeClassCount = bmalloc::sizeClass(smallLineSize);
+ m_smallLineMetadata.grow(sizeClassCount * smallLineCount());
+
+ for (size_t sizeClass = 0; sizeClass < sizeClassCount; ++sizeClass) {
+ size_t size = objectSize(sizeClass);
+ LineMetadata* pageMetadata = &m_smallLineMetadata[sizeClass * smallLineCount()];
+
+ size_t object = 0;
+ size_t line = 0;
+ while (object < m_vmPageSizePhysical) {
+ line = object / smallLineSize;
+ size_t leftover = object % smallLineSize;
+
+ size_t objectCount;
+ size_t remainder;
+ divideRoundingUp(smallLineSize - leftover, size, objectCount, remainder);
+
+ pageMetadata[line] = { static_cast<unsigned char>(leftover), static_cast<unsigned char>(objectCount) };
+
+ object += objectCount * size;
+ }
+
+ // Don't allow the last object in a page to escape the page.
+ if (object > m_vmPageSizePhysical) {
+ BASSERT(pageMetadata[line].objectCount);
+ --pageMetadata[line].objectCount;
+ }
+ }
+}
+
+void HeapConstants::initializePageMetadata()
+{
+ auto computePageSize = [&](size_t sizeClass) {
+ size_t size = objectSize(sizeClass);
+ if (sizeClass < bmalloc::sizeClass(smallLineSize))
+ return m_vmPageSizePhysical;
+
+ for (size_t pageSize = m_vmPageSizePhysical; pageSize < pageSizeMax; pageSize += m_vmPageSizePhysical) {
+ RELEASE_BASSERT(pageSize <= chunkSize / 2);
+ size_t waste = pageSize % size;
+ if (waste <= pageSize / pageSizeWasteFactor)
+ return pageSize;
+ }
+
+ return pageSizeMax;
+ };
+
+ for (size_t i = 0; i < sizeClassCount; ++i)
+ m_pageClasses[i] = (computePageSize(i) - 1) / smallPageSize;
+}
+
+} // namespace bmalloc
Copied: trunk/Source/bmalloc/bmalloc/HeapConstants.h (from rev 254301, trunk/Source/bmalloc/bmalloc/LineMetadata.h) (0 => 254303)
--- trunk/Source/bmalloc/bmalloc/HeapConstants.h (rev 0)
+++ trunk/Source/bmalloc/bmalloc/HeapConstants.h 2020-01-09 22:57:39 UTC (rev 254303)
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2014-2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "LineMetadata.h"
+#include "Mutex.h"
+#include "Sizes.h"
+#include "StaticPerProcess.h"
+#include "Vector.h"
+#include <array>
+#include <mutex>
+
+namespace bmalloc {
+
+class HeapConstants : public StaticPerProcess<HeapConstants> {
+public:
+ HeapConstants(std::lock_guard<Mutex>&);
+ ~HeapConstants() = delete;
+
+ inline size_t pageClass(size_t sizeClass) const { return m_pageClasses[sizeClass]; }
+ inline size_t smallLineCount() const { return m_vmPageSizePhysical / smallLineSize; }
+ inline unsigned char startOffset(size_t sizeClass, size_t lineNumber) { return lineMetadata(sizeClass, lineNumber).startOffset; }
+ inline unsigned char objectCount(size_t sizeClass, size_t lineNumber) { return lineMetadata(sizeClass, lineNumber).objectCount; }
+
+private:
+ void initializeLineMetadata();
+ void initializePageMetadata();
+
+ inline LineMetadata& lineMetadata(size_t sizeClass, size_t lineNumber)
+ {
+ return m_smallLineMetadata[sizeClass * smallLineCount() + lineNumber];
+ }
+
+ size_t m_vmPageSizePhysical;
+ Vector<LineMetadata> m_smallLineMetadata;
+ std::array<size_t, sizeClassCount> m_pageClasses;
+};
+DECLARE_STATIC_PER_PROCESS_STORAGE(HeapConstants);
+
+} // namespace bmalloc
Modified: trunk/Source/bmalloc/bmalloc/LineMetadata.h (254302 => 254303)
--- trunk/Source/bmalloc/bmalloc/LineMetadata.h 2020-01-09 22:57:24 UTC (rev 254302)
+++ trunk/Source/bmalloc/bmalloc/LineMetadata.h 2020-01-09 22:57:39 UTC (rev 254303)
@@ -23,9 +23,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef LineMetadata_h
-#define LineMetadata_h
+#pragma once
+#include "Sizes.h"
+
namespace bmalloc {
struct LineMetadata {
@@ -42,5 +43,3 @@
"maximum object count must fit in LineMetadata::objectCount");
} // namespace bmalloc
-
-#endif // LineMetadata_h
Modified: trunk/Source/bmalloc/bmalloc.xcodeproj/project.pbxproj (254302 => 254303)
--- trunk/Source/bmalloc/bmalloc.xcodeproj/project.pbxproj 2020-01-09 22:57:24 UTC (rev 254302)
+++ trunk/Source/bmalloc/bmalloc.xcodeproj/project.pbxproj 2020-01-09 22:57:39 UTC (rev 254303)
@@ -147,6 +147,8 @@
E3FBB5A1225EADB000DB6FBD /* IsoSharedHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3FBB59E225EADB000DB6FBD /* IsoSharedHeap.cpp */; };
E3FBB5A2225EADB000DB6FBD /* IsoSharedHeap.h in Headers */ = {isa = PBXBuildFile; fileRef = E3FBB59F225EADB000DB6FBD /* IsoSharedHeap.h */; settings = {ATTRIBUTES = (Private, ); }; };
E3FBB5A4225ECAD200DB6FBD /* IsoSharedHeapInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = E3FBB5A3225ECAD200DB6FBD /* IsoSharedHeapInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ EB17D11123BFCD42002093A7 /* HeapConstants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EB17D11023BFC8C4002093A7 /* HeapConstants.cpp */; };
+ EB17D11223BFCD7A002093A7 /* HeapConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = EB17D10E23BE691D002093A7 /* HeapConstants.h */; settings = {ATTRIBUTES = (Private, ); }; };
FE48BD3B2321E8D700F136D0 /* FailureAction.h in Headers */ = {isa = PBXBuildFile; fileRef = FE48BD3A2321E8CC00F136D0 /* FailureAction.h */; settings = {ATTRIBUTES = (Private, ); }; };
/* End PBXBuildFile section */
@@ -300,6 +302,8 @@
E3FBB59E225EADB000DB6FBD /* IsoSharedHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IsoSharedHeap.cpp; path = bmalloc/IsoSharedHeap.cpp; sourceTree = "<group>"; };
E3FBB59F225EADB000DB6FBD /* IsoSharedHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IsoSharedHeap.h; path = bmalloc/IsoSharedHeap.h; sourceTree = "<group>"; };
E3FBB5A3225ECAD200DB6FBD /* IsoSharedHeapInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IsoSharedHeapInlines.h; path = bmalloc/IsoSharedHeapInlines.h; sourceTree = "<group>"; };
+ EB17D10E23BE691D002093A7 /* HeapConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HeapConstants.h; path = bmalloc/HeapConstants.h; sourceTree = "<group>"; };
+ EB17D11023BFC8C4002093A7 /* HeapConstants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HeapConstants.cpp; path = bmalloc/HeapConstants.cpp; sourceTree = "<group>"; };
FE48BD3A2321E8CC00F136D0 /* FailureAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FailureAction.h; path = bmalloc/FailureAction.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -482,6 +486,8 @@
0F5BF14C1F22B0C30029D91D /* Gigacage.h */,
14DA320E18875D9F007269E0 /* Heap.cpp */,
14DA320C18875B09007269E0 /* Heap.h */,
+ EB17D11023BFC8C4002093A7 /* HeapConstants.cpp */,
+ EB17D10E23BE691D002093A7 /* HeapConstants.h */,
140FA00419CE4B6800FFD3C8 /* LineMetadata.h */,
144BE11E1CA346520099C8C0 /* Object.h */,
14105E8318E14374003A106E /* ObjectType.cpp */,
@@ -600,6 +606,7 @@
0F7EB8291F9541B000F1ABCB /* FreeListInlines.h in Headers */,
0F5BF14D1F22B0C30029D91D /* Gigacage.h in Headers */,
1400274918F89C1300115C97 /* Heap.h in Headers */,
+ EB17D11223BFCD7A002093A7 /* HeapConstants.h in Headers */,
0F5BF1471F22A8B10029D91D /* HeapKind.h in Headers */,
0F7EB83C1F9541B000F1ABCB /* IsoAllocator.h in Headers */,
0F7EB8261F9541B000F1ABCB /* IsoAllocatorInlines.h in Headers */,
@@ -759,6 +766,7 @@
0F7EB83E1F9541B000F1ABCB /* FreeList.cpp in Sources */,
0F5BF14F1F22DEAF0029D91D /* Gigacage.cpp in Sources */,
14F271C718EA3990008C152F /* Heap.cpp in Sources */,
+ EB17D11123BFCD42002093A7 /* HeapConstants.cpp in Sources */,
0FD557331F7EDB7B00B1F0A3 /* HeapKind.cpp in Sources */,
0F7EB83B1F9541B000F1ABCB /* IsoHeapImpl.cpp in Sources */,
0F5549EF1FB54704007FF75A /* IsoPage.cpp in Sources */,