/* * Copyright (c) 2021-2023, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace JS::Bytecode { ThrowCompletionOr> base_object_for_get(Bytecode::Interpreter&, Value base_value); ThrowCompletionOr get_by_id(Bytecode::Interpreter&, IdentifierTableIndex, Value base_value, Value this_value, u32 cache_index); ThrowCompletionOr get_by_value(Bytecode::Interpreter&, Value base_value, Value property_key_value); ThrowCompletionOr get_global(Bytecode::Interpreter&, IdentifierTableIndex, u32 cache_index); ThrowCompletionOr put_by_property_key(VM&, Value base, Value this_value, Value value, PropertyKey name, Op::PropertyKind kind); template ThrowCompletionOr perform_call(Interpreter&, InstructionType const&, Value callee, MarkedVector argument_values); template ThrowCompletionOr throw_if_needed_for_call(Interpreter&, InstructionType const&, Value callee); }