WeakContainer.cpp 518 B

12345678910111213141516171819202122232425262728293031
  1. /*
  2. * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibGC/Heap.h>
  7. #include <LibGC/WeakContainer.h>
  8. namespace GC {
  9. WeakContainer::WeakContainer(Heap& heap)
  10. : m_heap(heap)
  11. {
  12. m_heap.did_create_weak_container({}, *this);
  13. }
  14. WeakContainer::~WeakContainer()
  15. {
  16. deregister();
  17. }
  18. void WeakContainer::deregister()
  19. {
  20. if (!m_registered)
  21. return;
  22. m_heap.did_destroy_weak_container({}, *this);
  23. m_registered = false;
  24. }
  25. }