@@ -174,12 +174,22 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function
174174
175175 ecma_property_t * parameters_map_prop_p = ecma_create_internal_property (obj_p ,
176176 ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP );
177- ECMA_SET_POINTER (ECMA_PROPERTY_VALUE_PTR (parameters_map_prop_p )-> value , map_p );
178177
179178 ecma_property_t * scope_prop_p = ecma_create_internal_property (map_p ,
180179 ECMA_INTERNAL_PROPERTY_SCOPE );
180+
181+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
182+
183+ ECMA_PROPERTY_VALUE_PTR (parameters_map_prop_p )-> value = ecma_make_object_value (map_p );
184+ ECMA_PROPERTY_VALUE_PTR (scope_prop_p )-> value = ecma_make_object_value (lex_env_p );
185+
186+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
187+
188+ ECMA_SET_POINTER (ECMA_PROPERTY_VALUE_PTR (parameters_map_prop_p )-> value , map_p );
181189 ECMA_SET_POINTER (ECMA_PROPERTY_VALUE_PTR (scope_prop_p )-> value , lex_env_p );
182190
191+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
192+
183193 ecma_deref_object (map_p );
184194 }
185195 }
@@ -285,8 +295,18 @@ ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap]
285295 equal to mapped argument's name */
286296{
287297 ecma_property_t * scope_prop_p = ecma_get_internal_property (map_p , ECMA_INTERNAL_PROPERTY_SCOPE );
298+
299+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
300+
301+ ecma_object_t * lex_env_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (scope_prop_p )-> value );
302+
303+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
304+
288305 ecma_object_t * lex_env_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t ,
289306 ECMA_PROPERTY_VALUE_PTR (scope_prop_p )-> value );
307+
308+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
309+
290310 JERRY_ASSERT (lex_env_p != NULL
291311 && ecma_is_lexical_environment (lex_env_p ));
292312
@@ -316,9 +336,18 @@ ecma_op_arguments_object_get (ecma_object_t *obj_p, /**< the object */
316336{
317337 // 1.
318338 ecma_property_t * map_prop_p = ecma_get_internal_property (obj_p , ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP );
339+
340+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
341+
342+ ecma_object_t * map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
343+
344+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
345+
319346 ecma_object_t * map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t ,
320347 ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
321348
349+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
350+
322351 // 2.
323352 ecma_property_t * mapped_prop_p = ecma_op_object_get_own_property (map_p , property_name_p );
324353
@@ -362,9 +391,18 @@ ecma_op_arguments_object_get_own_property (ecma_object_t *obj_p, /**< the object
362391
363392 // 3.
364393 ecma_property_t * map_prop_p = ecma_get_internal_property (obj_p , ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP );
394+
395+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
396+
397+ ecma_object_t * map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
398+
399+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
400+
365401 ecma_object_t * map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t ,
366402 ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
367403
404+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
405+
368406 // 4.
369407 ecma_property_t * mapped_prop_p = ecma_op_object_get_own_property (map_p , property_name_p );
370408
@@ -402,9 +440,18 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj
402440{
403441 // 1.
404442 ecma_property_t * map_prop_p = ecma_get_internal_property (obj_p , ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP );
443+
444+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
445+
446+ ecma_object_t * map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
447+
448+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
449+
405450 ecma_object_t * map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t ,
406451 ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
407452
453+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
454+
408455 // 2.
409456 ecma_property_t * mapped_prop_p = ecma_op_object_get_own_property (map_p , property_name_p );
410457
@@ -443,9 +490,18 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj
443490 {
444491 /* emulating execution of function described by MakeArgSetter */
445492 ecma_property_t * scope_prop_p = ecma_get_internal_property (map_p , ECMA_INTERNAL_PROPERTY_SCOPE );
493+
494+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
495+
496+ ecma_object_t * lex_env_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (scope_prop_p )-> value );
497+
498+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
499+
446500 ecma_object_t * lex_env_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t ,
447501 ECMA_PROPERTY_VALUE_PTR (scope_prop_p )-> value );
448502
503+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
504+
449505 ecma_property_t * mapped_prop_p = ecma_op_object_get_own_property (map_p , property_name_p );
450506 ecma_value_t arg_name_prop_value = ecma_get_named_data_property_value (mapped_prop_p );
451507
@@ -500,9 +556,18 @@ ecma_op_arguments_object_delete (ecma_object_t *obj_p, /**< the object */
500556{
501557 // 1.
502558 ecma_property_t * map_prop_p = ecma_get_internal_property (obj_p , ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP );
559+
560+ #ifdef ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY
561+
562+ ecma_object_t * map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
563+
564+ #else /* !ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
565+
503566 ecma_object_t * map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t ,
504567 ECMA_PROPERTY_VALUE_PTR (map_prop_p )-> value );
505568
569+ #endif /* ECMA_VALUE_CAN_STORE_UINTPTR_VALUE_DIRECTLY */
570+
506571 // 2.
507572 ecma_property_t * mapped_prop_p = ecma_op_object_get_own_property (map_p , property_name_p );
508573
0 commit comments