@@ -146,7 +146,7 @@ njs_object_hash_create(njs_vm_t *vm, njs_lvlhsh_t *hash,
146146
147147 prop -> name = * prop -> pname ;
148148 if (prop -> type != NJS_ACCESSOR ) {
149- prop -> u .value = * prop -> u .pvalue ;
149+ prop -> u .value = * prop -> u .pvalue ;
150150 }
151151 }
152152
@@ -1352,6 +1352,13 @@ njs_object_define_property(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
13521352 value = njs_argument (args , 1 );
13531353 name = njs_lvalue_arg (& lvalue , args , nargs , 2 );
13541354
1355+ if (!name -> atom_id ) {
1356+ ret = njs_atom_atomize_key (vm , name );
1357+ if (ret != NJS_OK ) {
1358+ return NJS_ERROR ;
1359+ }
1360+ }
1361+
13551362 ret = njs_object_prop_define (vm , value , name , desc ,
13561363 NJS_OBJECT_PROP_DESCRIPTOR , 0 );
13571364 if (njs_slow_path (ret != NJS_OK )) {
@@ -1415,6 +1422,13 @@ njs_object_define_properties(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
14151422 goto done ;
14161423 }
14171424
1425+ if (!(& keys -> start [i ])-> atom_id ) {
1426+ ret = njs_atom_atomize_key (vm , & keys -> start [i ]);
1427+ if (ret != NJS_OK ) {
1428+ goto done ;
1429+ }
1430+ }
1431+
14181432 ret = njs_object_prop_define (vm , value , & keys -> start [i ], & desc ,
14191433 NJS_OBJECT_PROP_DESCRIPTOR , 0 );
14201434 if (njs_slow_path (ret != NJS_OK )) {
@@ -1494,6 +1508,15 @@ njs_object_get_own_property_descriptors(njs_vm_t *vm, njs_value_t *args,
14941508
14951509 for (i = 0 ; i < length ; i ++ ) {
14961510 key = & names -> start [i ];
1511+ if (!key -> atom_id ) {
1512+
1513+ ret = njs_atom_atomize_key (vm , key );
1514+ if (ret != NJS_OK ) {
1515+ ret = NJS_ERROR ;
1516+ goto done ;
1517+ }
1518+ }
1519+
14971520 ret = njs_object_prop_descriptor (vm , & descriptor , value , key );
14981521 if (njs_slow_path (ret != NJS_OK )) {
14991522 ret = NJS_ERROR ;
@@ -1975,6 +1998,13 @@ njs_property_prototype_create(njs_vm_t *vm, njs_lvlhsh_t *hash,
19751998 return NULL ;
19761999 }
19772000
2001+ if (!prop -> name .atom_id ) {
2002+ ret = njs_atom_atomize_key (vm , & prop -> name );
2003+ if (ret != NJS_OK ) {
2004+ return NULL ;
2005+ }
2006+ }
2007+
19782008 njs_set_type_object (njs_prop_value (prop ), prototype , prototype -> type );
19792009
19802010 lhq .value = prop ;
@@ -2234,6 +2264,13 @@ njs_property_constructor_set(njs_vm_t *vm, njs_lvlhsh_t *hash,
22342264 njs_value_assign (njs_prop_value (prop ), constructor );
22352265 prop -> enumerable = 0 ;
22362266
2267+ if (!prop -> name .atom_id ) {
2268+ ret = njs_atom_atomize_key (vm , & prop -> name );
2269+ if (ret != NJS_OK ) {
2270+ return NULL ;
2271+ }
2272+ }
2273+
22372274 lhq .value = prop ;
22382275 lhq .key_hash = NJS_CONSTRUCTOR_HASH ;
22392276 lhq .key = njs_str_value ("constructor" );
0 commit comments