@@ -511,10 +511,10 @@ ecma_create_named_data_property (ecma_object_t *obj_p, /**< object */
511511 JERRY_ASSERT (ecma_find_named_property (obj_p, name_p) == NULL );
512512
513513 ecma_property_t *prop_p = ecma_alloc_property ();
514+ name_p = ecma_copy_or_ref_ecma_string (name_p);
514515
515516 prop_p->type = ECMA_PROPERTY_NAMEDDATA;
516517
517- name_p = ecma_copy_or_ref_ecma_string (name_p);
518518 ECMA_SET_NON_NULL_POINTER (prop_p->u .named_data_property .name_p , name_p);
519519
520520 prop_p->u .named_data_property .writable = is_writable ? ECMA_PROPERTY_WRITABLE : ECMA_PROPERTY_NOT_WRITABLE;
@@ -526,12 +526,12 @@ ecma_create_named_data_property (ecma_object_t *obj_p, /**< object */
526526
527527 ecma_set_named_data_property_value (prop_p, ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED));
528528
529- ecma_lcache_invalidate (obj_p, name_p, NULL );
530-
531529 ecma_property_t *list_head_p = ecma_get_property_list (obj_p);
532530 ECMA_SET_POINTER (prop_p->next_property_p , list_head_p);
533531 ecma_set_property_list (obj_p, prop_p);
534532
533+ ecma_lcache_invalidate (obj_p, name_p, NULL );
534+
535535 return prop_p;
536536} /* ecma_create_named_data_property */
537537
@@ -552,10 +552,11 @@ ecma_create_named_accessor_property (ecma_object_t *obj_p, /**< object */
552552 JERRY_ASSERT (ecma_find_named_property (obj_p, name_p) == NULL );
553553
554554 ecma_property_t *prop_p = ecma_alloc_property ();
555+ ecma_getter_setter_pointers_t *getter_setter_pointers_p = ecma_alloc_getter_setter_pointers ();
556+ name_p = ecma_copy_or_ref_ecma_string (name_p);
555557
556558 prop_p->type = ECMA_PROPERTY_NAMEDACCESSOR;
557559
558- name_p = ecma_copy_or_ref_ecma_string (name_p);
559560 ECMA_SET_NON_NULL_POINTER (prop_p->u .named_accessor_property .name_p , name_p);
560561
561562 prop_p->u .named_accessor_property .enumerable = (is_enumerable ?
@@ -565,21 +566,20 @@ ecma_create_named_accessor_property (ecma_object_t *obj_p, /**< object */
565566
566567 prop_p->u .named_accessor_property .is_lcached = false ;
567568
568- ecma_lcache_invalidate (obj_p, name_p, NULL );
569+ ECMA_SET_NON_NULL_POINTER (prop_p-> u . named_accessor_property . getter_setter_pair_cp , getter_setter_pointers_p );
569570
570571 ecma_property_t *list_head_p = ecma_get_property_list (obj_p);
571572 ECMA_SET_POINTER (prop_p->next_property_p , list_head_p);
572573 ecma_set_property_list (obj_p, prop_p);
573574
574- ecma_getter_setter_pointers_t *getter_setter_pointers_p = ecma_alloc_getter_setter_pointers ();
575- ECMA_SET_NON_NULL_POINTER (prop_p->u .named_accessor_property .getter_setter_pair_cp , getter_setter_pointers_p);
576-
577575 /*
578576 * Should be performed after linking the property into object's property list, because the setters assert that.
579577 */
580578 ecma_set_named_accessor_property_getter (obj_p, prop_p, get_p);
581579 ecma_set_named_accessor_property_setter (obj_p, prop_p, set_p);
582580
581+ ecma_lcache_invalidate (obj_p, name_p, NULL );
582+
583583 return prop_p;
584584} /* ecma_create_named_accessor_property */
585585
0 commit comments