mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 13:19:05 +00:00
LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T>
The main motivation behind this is to remove JS specifics of the Realm from the implementation of the Heap. As a side effect of this change, this is a bit nicer to read than the previous approach, and in my opinion, also makes it a little more clear that this method is specific to a JavaScript Realm.
This commit is contained in:
parent
2a5dbedad4
commit
9b79a686eb
Notes:
github-actions[bot]
2024-11-13 21:52:48 +00:00
Author: https://github.com/shannonbooth
Commit: 9b79a686eb
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2322
Reviewed-by: https://github.com/gmta
326 changed files with 697 additions and 714 deletions
|
@ -103,7 +103,7 @@ namespace Web::Bindings {
|
|||
template<>
|
||||
void Intrinsics::create_web_namespace<@namespace_class@>(JS::Realm& realm)
|
||||
{
|
||||
auto namespace_object = heap().allocate<@namespace_class@>(realm, realm);
|
||||
auto namespace_object = realm.create<@namespace_class@>(realm);
|
||||
m_namespaces.set("@interface_name@"_fly_string, namespace_object);
|
||||
|
||||
[[maybe_unused]] static constexpr u8 attr = JS::Attribute::Writable | JS::Attribute::Configurable;)~~~");
|
||||
|
@ -139,16 +139,16 @@ void Intrinsics::create_web_prototype_and_constructor<@prototype_class@>(JS::Rea
|
|||
if (!named_properties_class.is_empty()) {
|
||||
gen.set("named_properties_class", named_properties_class);
|
||||
gen.append(R"~~~(
|
||||
auto named_properties_object = heap().allocate<@named_properties_class@>(realm, realm);
|
||||
auto named_properties_object = realm.create<@named_properties_class@>(realm);
|
||||
m_prototypes.set("@named_properties_class@"_fly_string, named_properties_object);
|
||||
|
||||
)~~~");
|
||||
}
|
||||
gen.append(R"~~~(
|
||||
auto prototype = heap().allocate<@prototype_class@>(realm, realm);
|
||||
auto prototype = realm.create<@prototype_class@>(realm);
|
||||
m_prototypes.set("@interface_name@"_fly_string, prototype);
|
||||
|
||||
auto constructor = heap().allocate<@constructor_class@>(realm, realm);
|
||||
auto constructor = realm.create<@constructor_class@>(realm);
|
||||
m_constructors.set("@interface_name@"_fly_string, constructor);
|
||||
|
||||
prototype->define_direct_property(vm.names.constructor, constructor.ptr(), JS::Attribute::Writable | JS::Attribute::Configurable);
|
||||
|
@ -159,7 +159,7 @@ void Intrinsics::create_web_prototype_and_constructor<@prototype_class@>(JS::Rea
|
|||
gen.set("legacy_interface_name", legacy_constructor->name);
|
||||
gen.set("legacy_constructor_class", legacy_constructor->constructor_class);
|
||||
gen.append(R"~~~(
|
||||
auto legacy_constructor = heap().allocate<@legacy_constructor_class@>(realm, realm);
|
||||
auto legacy_constructor = realm.create<@legacy_constructor_class@>(realm);
|
||||
m_constructors.set("@legacy_interface_name@"_fly_string, legacy_constructor);
|
||||
|
||||
legacy_constructor->define_direct_property(vm.names.name, JS::PrimitiveString::create(vm, "@legacy_interface_name@"_string), JS::Attribute::Configurable);)~~~");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue