Use bump allocator for initial property storage
[WebKit-https.git] / Source / JavaScriptCore / heap / Heap.h
index c87b2f3..ef5e6d8 100644 (file)
@@ -91,6 +91,9 @@ namespace JSC {
         void notifyIsSafeToCollect() { m_isSafeToCollect = true; }
         void collectAllGarbage();
 
+        inline void* allocatePropertyStorage(size_t);
+        inline bool inPropertyStorageNursery(void*);
+
         void reportExtraMemoryCost(size_t cost);
 
         void protect(JSValue);
@@ -163,7 +166,7 @@ namespace JSC {
         RegisterFile& registerFile();
 
         static void writeBarrierSlowCase(const JSCell*, JSCell*);
-        
+
 #if ENABLE(LAZY_BLOCK_FREEING)
         void waitForRelativeTimeWhileHoldingLock(double relative);
         void waitForRelativeTime(double relative);
@@ -359,6 +362,22 @@ namespace JSC {
         return allocate(sizeClass);
     }
 
+    inline void* Heap::allocatePropertyStorage(size_t bytes)
+    {
+        ASSERT(!(bytes % sizeof(JSValue)));
+        if (bytes >= NewSpace::PropertyStorageNurserySize)
+            return 0;
+        if (void* result = m_newSpace.allocatePropertyStorage(bytes))
+            return result;
+        collect(DoNotSweep);
+        return m_newSpace.allocatePropertyStorage(bytes);
+    }
+    
+    inline bool Heap::inPropertyStorageNursery(void* ptr)
+    {
+        return m_newSpace.inPropertyStorageNursery(ptr);
+    }
+
 } // namespace JSC
 
 #endif // Heap_h