LibJS: Avoid transitions in GlobalObject::initialize_constructor()

We don't need transitions for either of these:

- Adding the 'name' property to a constructor object
- Adding the 'constructor' property to its prototype object
This commit is contained in:
Linus Groh 2021-08-28 17:23:10 +01:00
parent 47ab84ffd9
commit 45eef97906
Notes: sideshowbarker 2024-07-18 05:07:24 +09:00

View File

@ -136,11 +136,11 @@ inline void GlobalObject::initialize_constructor(PropertyName const& property_na
{
auto& vm = this->vm();
constructor = heap().allocate<ConstructorType>(*this, *this);
constructor->define_direct_property(vm.names.name, js_string(heap(), property_name.as_string()), Attribute::Configurable);
constructor->define_direct_property_without_transition(vm.names.name, js_string(heap(), property_name.as_string()), Attribute::Configurable);
if (vm.exception())
return;
if (prototype) {
prototype->define_direct_property(vm.names.constructor, constructor, Attribute::Writable | Attribute::Configurable);
prototype->define_direct_property_without_transition(vm.names.constructor, constructor, Attribute::Writable | Attribute::Configurable);
if (vm.exception())
return;
}