summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Runtime
diff options
context:
space:
mode:
authorLuke Wilde <lukew@serenityos.org>2022-12-11 18:16:15 +0000
committerLinus Groh <mail@linusgroh.de>2022-12-12 13:58:32 +0000
commit40cc38869e713513a4391b74e02b7318eb584baa (patch)
treed9e846a1703df0bd491da3433f4819ce1db1fc7c /Userland/Libraries/LibJS/Runtime
parent4311c2164e60e2765e1f50e065c627d678635f3d (diff)
downloadserenity-40cc38869e713513a4391b74e02b7318eb584baa.zip
LibJS: Move ExecutionContext function implementations out of line
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime')
-rw-r--r--Userland/Libraries/LibJS/Runtime/ExecutionContext.cpp41
-rw-r--r--Userland/Libraries/LibJS/Runtime/ExecutionContext.h29
2 files changed, 45 insertions, 25 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/ExecutionContext.cpp b/Userland/Libraries/LibJS/Runtime/ExecutionContext.cpp
new file mode 100644
index 0000000000..51a3ff21df
--- /dev/null
+++ b/Userland/Libraries/LibJS/Runtime/ExecutionContext.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2020-2021, Linus Groh <linusg@serenityos.org>
+ * Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibJS/Runtime/ExecutionContext.h>
+
+namespace JS {
+
+ExecutionContext::ExecutionContext(Heap& heap)
+ : arguments(heap)
+{
+}
+
+ExecutionContext::ExecutionContext(MarkedVector<Value> existing_arguments)
+ : arguments(move(existing_arguments))
+{
+}
+
+ExecutionContext ExecutionContext::copy() const
+{
+ ExecutionContext copy { arguments };
+
+ copy.function = function;
+ copy.realm = realm;
+ copy.script_or_module = script_or_module;
+ copy.lexical_environment = lexical_environment;
+ copy.variable_environment = variable_environment;
+ copy.private_environment = private_environment;
+ copy.current_node = current_node;
+ copy.function_name = function_name;
+ copy.this_value = this_value;
+ copy.is_strict_mode = is_strict_mode;
+
+ return copy;
+}
+
+}
diff --git a/Userland/Libraries/LibJS/Runtime/ExecutionContext.h b/Userland/Libraries/LibJS/Runtime/ExecutionContext.h
index cae575bdd1..3ac2f88521 100644
--- a/Userland/Libraries/LibJS/Runtime/ExecutionContext.h
+++ b/Userland/Libraries/LibJS/Runtime/ExecutionContext.h
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2020-2021, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2020-2021, Linus Groh <linusg@serenityos.org>
+ * Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@@ -21,34 +22,12 @@ using ScriptOrModule = Variant<Empty, NonnullGCPtr<Script>, NonnullGCPtr<Module>
// 9.4 Execution Contexts, https://tc39.es/ecma262/#sec-execution-contexts
struct ExecutionContext {
- explicit ExecutionContext(Heap& heap)
- : arguments(heap)
- {
- }
+ explicit ExecutionContext(Heap& heap);
- [[nodiscard]] ExecutionContext copy() const
- {
- ExecutionContext copy { arguments };
-
- copy.function = function;
- copy.realm = realm;
- copy.script_or_module = script_or_module;
- copy.lexical_environment = lexical_environment;
- copy.variable_environment = variable_environment;
- copy.private_environment = private_environment;
- copy.current_node = current_node;
- copy.function_name = function_name;
- copy.this_value = this_value;
- copy.is_strict_mode = is_strict_mode;
-
- return copy;
- }
+ [[nodiscard]] ExecutionContext copy() const;
private:
- explicit ExecutionContext(MarkedVector<Value> existing_arguments)
- : arguments(move(existing_arguments))
- {
- }
+ explicit ExecutionContext(MarkedVector<Value> existing_arguments);
public:
FunctionObject* function { nullptr }; // [[Function]]