diff --git a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp index 2783240ac6..80abaa5a5a 100644 --- a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp +++ b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.cpp @@ -56,19 +56,19 @@ ECMAScriptFunctionObject* ECMAScriptFunctionObject::create(GlobalObject& global_ ECMAScriptFunctionObject::ECMAScriptFunctionObject(FlyString name, String source_text, Statement const& ecmascript_code, Vector formal_parameters, i32 function_length, Environment* parent_scope, PrivateEnvironment* private_scope, Object& prototype, FunctionKind kind, bool strict, bool might_need_arguments_object, bool contains_direct_call_to_eval, bool is_arrow_function) : FunctionObject(prototype) + , m_name(move(name)) + , m_function_length(function_length) , m_environment(parent_scope) , m_private_environment(private_scope) , m_formal_parameters(move(formal_parameters)) , m_ecmascript_code(ecmascript_code) , m_realm(global_object().associated_realm()) - , m_strict(strict) , m_source_text(move(source_text)) - , m_name(move(name)) - , m_function_length(function_length) - , m_kind(kind) + , m_strict(strict) , m_might_need_arguments_object(might_need_arguments_object) , m_contains_direct_call_to_eval(contains_direct_call_to_eval) , m_is_arrow_function(is_arrow_function) + , m_kind(kind) { // NOTE: This logic is from OrdinaryFunctionCreate, https://tc39.es/ecma262/#sec-ordinaryfunctioncreate diff --git a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h index 5fed81ebff..3ac350500a 100644 --- a/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h +++ b/Userland/Libraries/LibJS/Runtime/ECMAScriptFunctionObject.h @@ -102,30 +102,31 @@ private: ThrowCompletionOr function_declaration_instantiation(Interpreter*); - // Internal Slots of ECMAScript Function Objects, https://tc39.es/ecma262/#table-internal-slots-of-ecmascript-function-objects - Environment* m_environment { nullptr }; // [[Environment]] - PrivateEnvironment* m_private_environment { nullptr }; // [[PrivateEnvironment]] - Vector const m_formal_parameters; // [[FormalParameters]] - NonnullRefPtr m_ecmascript_code; // [[ECMAScriptCode]] - ConstructorKind m_constructor_kind { ConstructorKind::Base }; // [[ConstructorKind]] - Realm* m_realm { nullptr }; // [[Realm]] - ScriptOrModule m_script_or_module; // [[ScriptOrModule]] - ThisMode m_this_mode { ThisMode::Global }; // [[ThisMode]] - bool m_strict { false }; // [[Strict]] - Object* m_home_object { nullptr }; // [[HomeObject]] - String m_source_text; // [[SourceText]] - Vector m_fields; // [[Fields]] - Vector m_private_methods; // [[PrivateMethods]] - bool m_is_class_constructor { false }; // [[IsClassConstructor]] - FlyString m_name; Optional m_bytecode_executable; i32 m_function_length { 0 }; - FunctionKind m_kind { FunctionKind::Normal }; - bool m_might_need_arguments_object { true }; - bool m_contains_direct_call_to_eval { true }; - bool m_is_arrow_function { false }; - bool m_has_simple_parameter_list { false }; + + // Internal Slots of ECMAScript Function Objects, https://tc39.es/ecma262/#table-internal-slots-of-ecmascript-function-objects + Environment* m_environment { nullptr }; // [[Environment]] + PrivateEnvironment* m_private_environment { nullptr }; // [[PrivateEnvironment]] + Vector const m_formal_parameters; // [[FormalParameters]] + NonnullRefPtr m_ecmascript_code; // [[ECMAScriptCode]] + Realm* m_realm { nullptr }; // [[Realm]] + ScriptOrModule m_script_or_module; // [[ScriptOrModule]] + Object* m_home_object { nullptr }; // [[HomeObject]] + String m_source_text; // [[SourceText]] + Vector m_fields; // [[Fields]] + Vector m_private_methods; // [[PrivateMethods]] + ConstructorKind m_constructor_kind : 1 { ConstructorKind::Base }; // [[ConstructorKind]] + bool m_strict : 1 { false }; // [[Strict]] + bool m_is_class_constructor : 1 { false }; // [[IsClassConstructor]] + ThisMode m_this_mode : 2 { ThisMode::Global }; // [[ThisMode]] + + bool m_might_need_arguments_object : 1 { true }; + bool m_contains_direct_call_to_eval : 1 { true }; + bool m_is_arrow_function : 1 { false }; + bool m_has_simple_parameter_list : 1 { false }; + FunctionKind m_kind : 3 { FunctionKind::Normal }; }; }