1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 04:57:44 +00:00

LibJS: Make intrinsics getters return NonnullGCPtr

Some of these are allocated upon initialization of the intrinsics, and
some lazily, but in neither case the getters actually return a nullptr.

This saves us a whole bunch of pointer dereferences (as NonnullGCPtr has
an `operator T&()`), and also has the interesting side effect of forcing
us to explicitly use the FunctionObject& overload of call(), as passing
a NonnullGCPtr is ambigous - it could implicitly be turned into a Value
_or_ a FunctionObject& (so we have to dereference manually).
This commit is contained in:
Linus Groh 2023-04-13 00:47:15 +02:00
parent ed9e2366da
commit b84f8fb55b
182 changed files with 564 additions and 567 deletions

View file

@ -3311,7 +3311,7 @@ using namespace Web::WebIDL;
namespace Web::Bindings {
@constructor_class@::@constructor_class@(JS::Realm& realm)
: NativeFunction("@name@"sv, *realm.intrinsics().function_prototype())
: NativeFunction("@name@"sv, realm.intrinsics().function_prototype())
{
}
@ -3698,7 +3698,7 @@ namespace Web::Bindings {
// https://webidl.spec.whatwg.org/#es-DOMException-specialness
// Object.getPrototypeOf(DOMException.prototype) === Error.prototype
generator.append(R"~~~(
: Object(ConstructWithPrototypeTag::Tag, *realm.intrinsics().error_prototype())
: Object(ConstructWithPrototypeTag::Tag, realm.intrinsics().error_prototype())
)~~~");
} else if (!interface.parent_name.is_empty()) {
generator.append(R"~~~(
@ -3706,7 +3706,7 @@ namespace Web::Bindings {
)~~~");
} else {
generator.append(R"~~~(
: Object(ConstructWithPrototypeTag::Tag, *realm.intrinsics().object_prototype())
: Object(ConstructWithPrototypeTag::Tag, realm.intrinsics().object_prototype())
)~~~");
}
@ -3821,7 +3821,7 @@ using namespace Web::WebIDL;
namespace Web::Bindings {
@prototype_class@::@prototype_class@(JS::Realm& realm)
: Object(ConstructWithPrototypeTag::Tag, *realm.intrinsics().iterator_prototype())
: Object(ConstructWithPrototypeTag::Tag, realm.intrinsics().iterator_prototype())
{
}