]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - runtime/ArrayStorage.h
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / runtime / ArrayStorage.h
index a0287c921bd932f963a5dd02182feb4459208a80..c93dc3bfd3fa44938b79eceee351a328ad15a9d5 100644 (file)
@@ -32,7 +32,6 @@
 #include "SparseArrayValueMap.h"
 #include "WriteBarrier.h"
 #include <wtf/Noncopyable.h>
 #include "SparseArrayValueMap.h"
 #include "WriteBarrier.h"
 #include <wtf/Noncopyable.h>
-#include <wtf/Platform.h>
 
 namespace JSC {
 
 
 namespace JSC {
 
@@ -54,9 +53,10 @@ public:
     
     Butterfly* butterfly() { return reinterpret_cast<Butterfly*>(this); }
     IndexingHeader* indexingHeader() { return IndexingHeader::from(this); }
     
     Butterfly* butterfly() { return reinterpret_cast<Butterfly*>(this); }
     IndexingHeader* indexingHeader() { return IndexingHeader::from(this); }
+    const IndexingHeader* indexingHeader() const { return IndexingHeader::from(this); }
     
     // We steal two fields from the indexing header: vectorLength and length.
     
     // We steal two fields from the indexing header: vectorLength and length.
-    unsigned length() { return indexingHeader()->publicLength(); }
+    unsigned length() const { return indexingHeader()->publicLength(); }
     void setLength(unsigned length) { indexingHeader()->setPublicLength(length); }
     unsigned vectorLength() { return indexingHeader()->vectorLength(); }
     void setVectorLength(unsigned length) { indexingHeader()->setVectorLength(length); }
     void setLength(unsigned length) { indexingHeader()->setPublicLength(length); }
     unsigned vectorLength() { return indexingHeader()->vectorLength(); }
     void setVectorLength(unsigned length) { indexingHeader()->setVectorLength(length); }
@@ -68,6 +68,11 @@ public:
         m_numValuesInVector = other.m_numValuesInVector;
     }
     
         m_numValuesInVector = other.m_numValuesInVector;
     }
     
+    bool hasHoles() const
+    {
+        return m_numValuesInVector != length();
+    }   
+
     bool inSparseMode()
     {
         return m_sparseMap && m_sparseMap->sparseMode();
     bool inSparseMode()
     {
         return m_sparseMap && m_sparseMap->sparseMode();