/* * Copyright (c) 2021-2022, Linus Groh * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include namespace JS { PromiseReaction* PromiseReaction::create(VM& vm, Type type, Optional capability, Optional handler) { return vm.heap().allocate_without_realm(type, move(capability), move(handler)); } PromiseReaction::PromiseReaction(Type type, Optional capability, Optional handler) : m_type(type) , m_capability(move(capability)) , m_handler(move(handler)) { } void PromiseReaction::visit_edges(Cell::Visitor& visitor) { Cell::visit_edges(visitor); if (m_capability.has_value()) { auto& capability = m_capability.value(); visitor.visit(capability.promise); visitor.visit(capability.resolve); visitor.visit(capability.reject); } } }