LibJS: Make namespace object initialization lazy as well
This commit is contained in:
parent
76f89bf50d
commit
63136615d2
Notes:
sideshowbarker
2024-07-17 04:57:23 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/63136615d2 Pull-request: https://github.com/SerenityOS/serenity/pull/16939 Reviewed-by: https://github.com/trflynn89 ✅
2 changed files with 13 additions and 12 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Linus Groh <linusg@serenityos.org>
|
||||
* Copyright (c) 2022-2023, Linus Groh <linusg@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@ -231,12 +231,6 @@ void Intrinsics::initialize_intrinsics(Realm& realm)
|
|||
m_throw_type_error_function->define_direct_property(vm.names.name, PrimitiveString::create(vm, ""), 0);
|
||||
MUST(m_throw_type_error_function->internal_prevent_extensions());
|
||||
|
||||
#define __JS_ENUMERATE(ClassName, snake_name) \
|
||||
VERIFY(!m_##snake_name##_object); \
|
||||
m_##snake_name##_object = heap().allocate<ClassName>(realm, realm);
|
||||
JS_ENUMERATE_BUILTIN_NAMESPACE_OBJECTS
|
||||
#undef __JS_ENUMERATE
|
||||
|
||||
initialize_constructor(vm, vm.names.Error, *m_error_constructor, m_error_prototype);
|
||||
initialize_constructor(vm, vm.names.Function, *m_function_constructor, m_function_prototype);
|
||||
initialize_constructor(vm, vm.names.Object, *m_object_constructor, m_object_prototype);
|
||||
|
@ -331,6 +325,16 @@ JS_ENUMERATE_TEMPORAL_OBJECTS
|
|||
|
||||
#undef __JS_ENUMERATE_INNER
|
||||
|
||||
#define __JS_ENUMERATE(ClassName, snake_name) \
|
||||
ClassName* Intrinsics::snake_name##_object() \
|
||||
{ \
|
||||
if (!m_##snake_name##_object) \
|
||||
m_##snake_name##_object = heap().allocate<ClassName>(m_realm, m_realm); \
|
||||
return m_##snake_name##_object; \
|
||||
}
|
||||
JS_ENUMERATE_BUILTIN_NAMESPACE_OBJECTS
|
||||
#undef __JS_ENUMERATE
|
||||
|
||||
void Intrinsics::visit_edges(Visitor& visitor)
|
||||
{
|
||||
visitor.visit(m_realm);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Linus Groh <linusg@serenityos.org>
|
||||
* Copyright (c) 2022-2023, Linus Groh <linusg@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@ -78,10 +78,7 @@ public:
|
|||
#undef __JS_ENUMERATE
|
||||
|
||||
#define __JS_ENUMERATE(ClassName, snake_name) \
|
||||
ClassName* snake_name##_object() \
|
||||
{ \
|
||||
return m_##snake_name##_object; \
|
||||
}
|
||||
ClassName* snake_name##_object();
|
||||
JS_ENUMERATE_BUILTIN_NAMESPACE_OBJECTS
|
||||
#undef __JS_ENUMERATE
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue