/** * Assign value to named data property * * Note: * value previously stored in the property is freed */ inline void __attr_always_inline___ ecma_named_data_property_assign_value (ecma_object_t *obj_p, /**< object */ ecma_property_value_t *prop_value_p, /**< property value reference */ ecma_value_t value) /**< value to assign */ { ecma_assert_object_contains_the_property (obj_p, prop_value_p, ECMA_PROPERTY_TYPE_NAMEDDATA); ecma_value_assign_value (&prop_value_p->value, value); } /* ecma_named_data_property_assign_value */
/** * Set setter of named accessor property */ void ecma_set_named_accessor_property_setter (ecma_object_t *object_p, /**< the property's container */ ecma_property_t *prop_p, /**< named accessor property */ ecma_object_t *setter_p) /**< setter object */ { JERRY_ASSERT (ECMA_PROPERTY_GET_TYPE (prop_p) == ECMA_PROPERTY_TYPE_NAMEDACCESSOR); ecma_assert_object_contains_the_property (object_p, prop_p); ECMA_SET_POINTER (ECMA_PROPERTY_VALUE_PTR (prop_p)->getter_setter_pair.setter_p, setter_p); } /* ecma_set_named_accessor_property_setter */
/** * Assign value to named data property * * Note: * value previously stored in the property is freed */ void ecma_named_data_property_assign_value (ecma_object_t *obj_p, /**< object */ ecma_property_t *prop_p, /**< property */ ecma_value_t value) /**< value to assign */ { JERRY_ASSERT (ECMA_PROPERTY_GET_TYPE (prop_p) == ECMA_PROPERTY_TYPE_NAMEDDATA); ecma_assert_object_contains_the_property (obj_p, prop_p); ecma_property_value_t *prop_value_p = ECMA_PROPERTY_VALUE_PTR (prop_p); ecma_value_assign_value (&prop_value_p->value, value); } /* ecma_named_data_property_assign_value */
/** * Set setter of named accessor property */ void ecma_set_named_accessor_property_setter (ecma_object_t *object_p, /**< the property's container */ ecma_property_value_t *prop_value_p, /**< property value reference */ ecma_object_t *setter_p) /**< setter object */ { ecma_assert_object_contains_the_property (object_p, prop_value_p, ECMA_PROPERTY_TYPE_NAMEDACCESSOR); #ifdef JERRY_CPOINTER_32_BIT ecma_getter_setter_pointers_t *getter_setter_pair_p; getter_setter_pair_p = ECMA_GET_POINTER (ecma_getter_setter_pointers_t, prop_value_p->getter_setter_pair_cp); ECMA_SET_POINTER (getter_setter_pair_p->setter_p, setter_p); #else /* !JERRY_CPOINTER_32_BIT */ ECMA_SET_POINTER (prop_value_p->getter_setter_pair.setter_p, setter_p); #endif /* JERRY_CPOINTER_32_BIT */ } /* ecma_set_named_accessor_property_setter */
/** * Assign value to named data property * * Note: * value previously stored in the property is freed */ void ecma_named_data_property_assign_value (ecma_object_t *obj_p, /**< object */ ecma_property_t *prop_p, /**< property */ ecma_value_t value) /**< value to assign */ { JERRY_ASSERT (ECMA_PROPERTY_GET_TYPE (prop_p) == ECMA_PROPERTY_TYPE_NAMEDDATA); ecma_assert_object_contains_the_property (obj_p, prop_p); if (ecma_is_value_number (value) && ecma_is_value_number (ecma_get_named_data_property_value (prop_p))) { const ecma_number_t *num_src_p = ecma_get_number_from_value (value); ecma_number_t *num_dst_p = ecma_get_number_from_value (ecma_get_named_data_property_value (prop_p)); *num_dst_p = *num_src_p; } else { ecma_value_t v = ecma_get_named_data_property_value (prop_p); ecma_free_value_if_not_object (v); ecma_set_named_data_property_value (prop_p, ecma_copy_value_if_not_object (value)); } } /* ecma_named_data_property_assign_value */