/* * Copyright (c) 2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include #include namespace JS { MarkedValueList::MarkedValueList(Heap& heap) : m_heap(&heap) { m_heap->did_create_marked_value_list({}, *this); } MarkedValueList::MarkedValueList(MarkedValueList const& other) : Vector(other) , m_heap(other.m_heap) { m_heap->did_create_marked_value_list({}, *this); } MarkedValueList::MarkedValueList(MarkedValueList&& other) : Vector(move(static_cast&>(other))) , m_heap(other.m_heap) { m_heap->did_create_marked_value_list({}, *this); } MarkedValueList::~MarkedValueList() { m_heap->did_destroy_marked_value_list({}, *this); } MarkedValueList& MarkedValueList::operator=(JS::MarkedValueList const& other) { Vector::operator=(other); if (m_heap != other.m_heap) { m_heap = other.m_heap; // NOTE: IntrusiveList will remove this MarkedValueList from the old heap it was part of. m_heap->did_create_marked_value_list({}, *this); } return *this; } }