/* * Copyright (c) 2020-2021, Andreas Kling * Copyright (c) 2020-2021, Linus Groh * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace JS { // 9.4 Execution Contexts, https://tc39.es/ecma262/#sec-execution-contexts struct ExecutionContext { explicit ExecutionContext(Heap& heap) : arguments(heap) { } FunctionObject* function { nullptr }; // [[Function]] Realm* realm { nullptr }; // [[Realm]] Environment* lexical_environment { nullptr }; // [[LexicalEnvironment]] Environment* variable_environment { nullptr }; // [[VariableEnvironment]] ASTNode const* current_node { nullptr }; FlyString function_name; Value this_value; MarkedValueList arguments; Object* arguments_object { nullptr }; bool is_strict_mode { false }; }; }