1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:27:35 +00:00

LibJS: Add define_direct_{property,accessor}_without_transition()

This commit is contained in:
Linus Groh 2021-08-28 17:47:16 +01:00
parent 222e518a53
commit 47ab84ffd9
2 changed files with 16 additions and 0 deletions

View file

@ -6,6 +6,7 @@
*/ */
#include <AK/String.h> #include <AK/String.h>
#include <AK/TemporaryChange.h>
#include <LibJS/Interpreter.h> #include <LibJS/Interpreter.h>
#include <LibJS/Runtime/AbstractOperations.h> #include <LibJS/Runtime/AbstractOperations.h>
#include <LibJS/Runtime/Accessor.h> #include <LibJS/Runtime/Accessor.h>
@ -1052,6 +1053,18 @@ void Object::define_direct_accessor(PropertyName const& property_name, FunctionO
} }
} }
void Object::define_direct_property_without_transition(PropertyName const& property_name, Value value, PropertyAttributes attributes)
{
TemporaryChange disable_transitions(m_transitions_enabled, false);
define_direct_property(property_name, value, attributes);
}
void Object::define_direct_accessor_without_transition(PropertyName const& property_name, FunctionObject* getter, FunctionObject* setter, PropertyAttributes attributes)
{
TemporaryChange disable_transitions(m_transitions_enabled, false);
define_direct_accessor(property_name, getter, setter, attributes);
}
void Object::ensure_shape_is_unique() void Object::ensure_shape_is_unique()
{ {
if (shape().is_unique()) if (shape().is_unique())

View file

@ -124,6 +124,9 @@ public:
void define_direct_property(PropertyName const& property_name, Value value, PropertyAttributes attributes) { storage_set(property_name, { value, attributes }); }; void define_direct_property(PropertyName const& property_name, Value value, PropertyAttributes attributes) { storage_set(property_name, { value, attributes }); };
void define_direct_accessor(PropertyName const&, FunctionObject* getter, FunctionObject* setter, PropertyAttributes attributes); void define_direct_accessor(PropertyName const&, FunctionObject* getter, FunctionObject* setter, PropertyAttributes attributes);
void define_direct_property_without_transition(PropertyName const&, Value, PropertyAttributes);
void define_direct_accessor_without_transition(PropertyName const&, FunctionObject* getter, FunctionObject* setter, PropertyAttributes);
void define_native_function(PropertyName const&, Function<Value(VM&, GlobalObject&)>, i32 length, PropertyAttributes attributes); void define_native_function(PropertyName const&, Function<Value(VM&, GlobalObject&)>, i32 length, PropertyAttributes attributes);
void define_native_accessor(PropertyName const&, Function<Value(VM&, GlobalObject&)> getter, Function<Value(VM&, GlobalObject&)> setter, PropertyAttributes attributes); void define_native_accessor(PropertyName const&, Function<Value(VM&, GlobalObject&)> getter, Function<Value(VM&, GlobalObject&)> setter, PropertyAttributes attributes);