MarkedValueList.h 739 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Noncopyable.h>
  8. #include <AK/Vector.h>
  9. #include <LibJS/Forward.h>
  10. #include <LibJS/Runtime/Value.h>
  11. namespace JS {
  12. class MarkedValueList : public Vector<Value, 32> {
  13. AK_MAKE_NONCOPYABLE(MarkedValueList);
  14. public:
  15. explicit MarkedValueList(Heap&);
  16. MarkedValueList(MarkedValueList&&);
  17. ~MarkedValueList();
  18. MarkedValueList& operator=(MarkedValueList&&) = delete;
  19. Vector<Value, 32>& values() { return *this; }
  20. MarkedValueList copy() const
  21. {
  22. MarkedValueList copy { m_heap };
  23. copy.extend(*this);
  24. return copy;
  25. }
  26. private:
  27. Heap& m_heap;
  28. };
  29. }