1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:17:44 +00:00

LibJS: Implement the GetPrototypeFromConstructor() abstract operation

This commit is contained in:
Linus Groh 2021-06-19 22:27:53 +01:00 committed by Andreas Kling
parent 6312627218
commit 500818e73d
2 changed files with 17 additions and 0 deletions

View file

@ -140,4 +140,20 @@ GlobalObject* get_function_realm(GlobalObject& global_object, Function const& fu
return &global_object;
}
// 10.1.14 GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto )
Object* get_prototype_from_constructor(GlobalObject& global_object, Function const& constructor, Object* (GlobalObject::*intrinsic_default_prototype)())
{
auto& vm = global_object.vm();
auto prototype = constructor.get(vm.names.prototype);
if (vm.exception())
return nullptr;
if (!prototype.is_object()) {
auto* realm = get_function_realm(global_object, constructor);
if (vm.exception())
return nullptr;
prototype = (realm->*intrinsic_default_prototype)();
}
return &prototype.as_object();
}
}