diff options
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/VM.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/VM.h b/Userland/Libraries/LibJS/Runtime/VM.h index 3134bc7d02..8d5708f3da 100644 --- a/Userland/Libraries/LibJS/Runtime/VM.h +++ b/Userland/Libraries/LibJS/Runtime/VM.h @@ -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> |