1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:27:35 +00:00

LibJS: Prepare ExecutionContext to store the current Realm Record

Also add VM::current_realm() to retrieve it, similar to all the other
getters (running_execution_context() et al.).
This commit is contained in:
Linus Groh 2021-09-11 20:55:11 +01:00
parent 15c33477e4
commit 332946ab4f

View file

@ -42,6 +42,7 @@ 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)
@ -56,6 +57,7 @@ struct ExecutionContext {
Object* arguments_object { nullptr };
Environment* lexical_environment { nullptr };
Environment* variable_environment { nullptr };
Realm* realm { nullptr };
bool is_strict_mode { false };
};
@ -146,6 +148,11 @@ public:
Environment const* variable_environment() const { return running_execution_context().variable_environment; }
Environment* variable_environment() { return running_execution_context().variable_environment; }
// https://tc39.es/ecma262/#current-realm
// The value of the Realm component of the running execution context is also called the current Realm Record.
Realm const* current_realm() const { return running_execution_context().realm; }
Realm* current_realm() { return running_execution_context().realm; }
bool in_strict_mode() const;
template<typename Callback>