diff options
author | Andreas Kling <kling@serenityos.org> | 2021-09-14 18:21:07 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-14 21:41:51 +0200 |
commit | df5414f47fbacbb7f1f4b4a0129c7f19573de955 (patch) | |
tree | 111e4557237275e3d021d9de4eeafc138efb8a31 /Userland/Libraries/LibJS | |
parent | 72ddaa31e3b0e542107b60c625c50fc00768da75 (diff) | |
download | serenity-df5414f47fbacbb7f1f4b4a0129c7f19573de955.zip |
LibJS: Reorganize ExecutionContext a little bit
- Move it to a separate header file
- Annotate the members that represent spec slots
- Reorganize the members (by spec vs non-spec)
Diffstat (limited to 'Userland/Libraries/LibJS')
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/ExecutionContext.h | 37 | ||||
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/VM.h | 20 |
2 files changed, 38 insertions, 19 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/ExecutionContext.h b/Userland/Libraries/LibJS/Runtime/ExecutionContext.h new file mode 100644 index 0000000000..9a7fa0ef04 --- /dev/null +++ b/Userland/Libraries/LibJS/Runtime/ExecutionContext.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2020-2021, Linus Groh <linusg@serenityos.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include <AK/FlyString.h> +#include <LibJS/Forward.h> +#include <LibJS/Runtime/MarkedValueList.h> +#include <LibJS/Runtime/Value.h> + +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 }; +}; + +} diff --git a/Userland/Libraries/LibJS/Runtime/VM.h b/Userland/Libraries/LibJS/Runtime/VM.h index 8d5708f3da..b0b402e943 100644 --- a/Userland/Libraries/LibJS/Runtime/VM.h +++ b/Userland/Libraries/LibJS/Runtime/VM.h @@ -18,6 +18,7 @@ #include <LibJS/Runtime/Error.h> #include <LibJS/Runtime/ErrorTypes.h> #include <LibJS/Runtime/Exception.h> +#include <LibJS/Runtime/ExecutionContext.h> #include <LibJS/Runtime/MarkedValueList.h> #include <LibJS/Runtime/Promise.h> #include <LibJS/Runtime/Value.h> @@ -42,25 +43,6 @@ struct ScopeFrame { bool pushed_environment { false }; }; -// 9.4 Execution Contexts, https://tc39.es/ecma262/#sec-execution-contexts -struct ExecutionContext { - explicit ExecutionContext(Heap& heap) - : arguments(heap) - { - } - - const ASTNode* current_node { nullptr }; - FlyString function_name; - FunctionObject* function { nullptr }; - Value this_value; - MarkedValueList arguments; - Object* arguments_object { nullptr }; - Environment* lexical_environment { nullptr }; - Environment* variable_environment { nullptr }; - Realm* realm { nullptr }; - bool is_strict_mode { false }; -}; - class VM : public RefCounted<VM> { public: struct CustomData { |