summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-09-14 18:21:07 +0200
committerAndreas Kling <kling@serenityos.org>2021-09-14 21:41:51 +0200
commitdf5414f47fbacbb7f1f4b4a0129c7f19573de955 (patch)
tree111e4557237275e3d021d9de4eeafc138efb8a31 /Userland/Libraries/LibJS
parent72ddaa31e3b0e542107b60c625c50fc00768da75 (diff)
downloadserenity-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.h37
-rw-r--r--Userland/Libraries/LibJS/Runtime/VM.h20
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 {