@@ -41,17 +41,20 @@ class IndexedPropertyStorage {
41
41
virtual ValueAndAttributes take_last () = 0;
42
42
43
43
virtual size_t size () const = 0;
44
- virtual size_t array_like_size () const = 0;
44
+ size_t array_like_size () const { return m_array_size; }
45
45
virtual bool set_array_like_size (size_t new_size) = 0;
46
46
47
47
bool is_simple_storage () const { return m_is_simple_storage; }
48
48
49
49
protected:
50
- explicit IndexedPropertyStorage (IsSimpleStorage is_simple_storage)
51
- : m_is_simple_storage(is_simple_storage == IsSimpleStorage::Yes)
50
+ explicit IndexedPropertyStorage (IsSimpleStorage is_simple_storage, size_t array_size = 0 )
51
+ : m_array_size(array_size)
52
+ , m_is_simple_storage(is_simple_storage == IsSimpleStorage::Yes)
52
53
{
53
54
}
54
55
56
+ size_t m_array_size { 0 };
57
+
55
58
private:
56
59
bool m_is_simple_storage { false };
57
60
};
@@ -73,7 +76,6 @@ class SimpleIndexedPropertyStorage final : public IndexedPropertyStorage {
73
76
virtual ValueAndAttributes take_last () override ;
74
77
75
78
virtual size_t size () const override { return m_packed_elements.size (); }
76
- virtual size_t array_like_size () const override { return m_array_size; }
77
79
virtual bool set_array_like_size (size_t new_size) override ;
78
80
79
81
Vector<Value> const & elements () const { return m_packed_elements; }
@@ -97,7 +99,6 @@ class SimpleIndexedPropertyStorage final : public IndexedPropertyStorage {
97
99
98
100
void grow_storage_if_needed ();
99
101
100
- size_t m_array_size { 0 };
101
102
Checked<size_t > m_number_of_empty_elements { 0 };
102
103
Vector<Value> m_packed_elements;
103
104
};
@@ -119,13 +120,11 @@ class GenericIndexedPropertyStorage final : public IndexedPropertyStorage {
119
120
virtual ValueAndAttributes take_last () override ;
120
121
121
122
virtual size_t size () const override { return m_sparse_elements.size (); }
122
- virtual size_t array_like_size () const override { return m_array_size; }
123
123
virtual bool set_array_like_size (size_t new_size) override ;
124
124
125
125
HashMap<u32 , ValueAndAttributes> const & sparse_elements () const { return m_sparse_elements; }
126
126
127
127
private:
128
- size_t m_array_size { 0 };
129
128
HashMap<u32 , ValueAndAttributes> m_sparse_elements;
130
129
};
131
130
0 commit comments