/* * Copyright (c) 2024, Dan Klishch * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include "Runtime/Cell.h" namespace JSSpecCompiler::Runtime { class Realm { public: Realm(DiagnosticEngine& diag); Runtime::Object* global_object() { return m_global_object; } template T* adopt_cell(T* cell) { m_cells.append(NonnullOwnPtr { NonnullOwnPtr::AdoptTag::Adopt, *cell }); return cell; } DiagnosticEngine& diag() { return m_diag; } private: DiagnosticEngine& m_diag; Vector> m_cells; Runtime::Object* m_global_object; }; }