diff --git a/Libraries/LibJS/Runtime/MarkedValueList.cpp b/Libraries/LibJS/Runtime/MarkedValueList.cpp index 58af575885..f268a21c6b 100644 --- a/Libraries/LibJS/Runtime/MarkedValueList.cpp +++ b/Libraries/LibJS/Runtime/MarkedValueList.cpp @@ -36,8 +36,8 @@ MarkedValueList::MarkedValueList(Heap& heap) } MarkedValueList::MarkedValueList(MarkedValueList&& other) - : m_heap(other.m_heap) - , m_values(move(other.m_values)) + : AK::Vector(move(static_cast&>(other))) + , m_heap(other.m_heap) { m_heap.did_create_marked_value_list({}, *this); } @@ -47,9 +47,4 @@ MarkedValueList::~MarkedValueList() m_heap.did_destroy_marked_value_list({}, *this); } -void MarkedValueList::append(Value value) -{ - m_values.append(value); -} - } diff --git a/Libraries/LibJS/Runtime/MarkedValueList.h b/Libraries/LibJS/Runtime/MarkedValueList.h index d9c262ed65..e311972181 100644 --- a/Libraries/LibJS/Runtime/MarkedValueList.h +++ b/Libraries/LibJS/Runtime/MarkedValueList.h @@ -33,7 +33,7 @@ namespace JS { -class MarkedValueList { +class MarkedValueList : public AK::Vector { AK_MAKE_NONCOPYABLE(MarkedValueList); public: @@ -43,16 +43,16 @@ public: MarkedValueList& operator=(MarkedValueList&&) = delete; - bool is_empty() const { return m_values.is_empty(); } - size_t size() const { return m_values.size(); } - void clear() { m_values.clear(); } - Vector& values() { return m_values; } + Vector& values() { return *this; } - void append(Value); + MarkedValueList copy() const + { + MarkedValueList copy { m_heap }; + copy.append(*this); + return copy; + } private: Heap& m_heap; - Vector m_values; }; - }