Skip to content

Commit 019d92b

Browse files
committed
Don't use pointer compression where the ecma_value can store pointer value directly.
This changes affects those internal properties where the property value type is an ecma_object_t ptr. JerryScript-DCO-1.0-Signed-off-by: Robert Sipka [email protected]
1 parent 02ba19f commit 019d92b

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

jerry-core/ecma/base/ecma-gc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,8 @@ ecma_gc_mark_property (ecma_property_t *property_p) /**< property */
315315
case ECMA_INTERNAL_PROPERTY_SCOPE: /* a lexical environment */
316316
case ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP: /* an object */
317317
{
318-
ecma_object_t *obj_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t, property_value);
318+
319+
ecma_object_t *obj_p = ecma_get_object_from_value (property_value);
319320

320321
ecma_gc_set_object_visited (obj_p, true);
321322

jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,8 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar
247247
ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_TARGET_FUNCTION);
248248

249249
ecma_object_t *this_arg_obj_p = ecma_get_object_from_value (this_arg);
250-
ECMA_SET_NON_NULL_POINTER (ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value, this_arg_obj_p);
250+
251+
ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value = ecma_make_object_value (this_arg_obj_p);
251252

252253
/* 8. */
253254
ecma_property_t *bound_this_prop_p;

jerry-core/ecma/operations/ecma-function-object.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ ecma_op_create_function_object (ecma_object_t *scope_p, /**< function's scope */
168168

169169
// 9.
170170
ecma_property_t *scope_prop_p = ecma_create_internal_property (f, ECMA_INTERNAL_PROPERTY_SCOPE);
171-
ECMA_SET_POINTER (ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value, scope_p);
171+
172+
ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value = ecma_make_object_value (scope_p);
172173

173174
// 10., 11., 12.
174175
ecma_property_t *bytecode_prop_p = ecma_create_internal_property (f, ECMA_INTERNAL_PROPERTY_CODE_BYTECODE);
@@ -529,8 +530,7 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object *
529530
ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_TARGET_FUNCTION);
530531

531532
ecma_object_t *target_func_obj_p;
532-
target_func_obj_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
533-
ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value);
533+
target_func_obj_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value);
534534

535535
/* 3. */
536536
ret_value = ecma_op_object_has_instance (target_func_obj_p, value);
@@ -576,8 +576,7 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */
576576
ecma_property_t *scope_prop_p = ecma_get_internal_property (func_obj_p, ECMA_INTERNAL_PROPERTY_SCOPE);
577577
ecma_property_t *bytecode_prop_p = ecma_get_internal_property (func_obj_p, ECMA_INTERNAL_PROPERTY_CODE_BYTECODE);
578578

579-
ecma_object_t *scope_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
580-
ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value);
579+
ecma_object_t *scope_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value);
581580

582581
// 8.
583582
ecma_value_t this_binding;
@@ -685,8 +684,7 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */
685684
ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_TARGET_FUNCTION);
686685

687686
ecma_object_t *target_func_obj_p;
688-
target_func_obj_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
689-
ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value);
687+
target_func_obj_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value);
690688

691689
/* 4. */
692690
ecma_property_t *bound_args_prop_p;
@@ -870,8 +868,7 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */
870868
ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_TARGET_FUNCTION);
871869

872870
ecma_object_t *target_func_obj_p;
873-
target_func_obj_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
874-
ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value);
871+
target_func_obj_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (target_function_prop_p)->value);
875872

876873
/* 2. */
877874
if (!ecma_is_constructor (ecma_make_object_value (target_func_obj_p)))

jerry-core/ecma/operations/ecma-objects-arguments.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -174,11 +174,11 @@ 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);
177+
ECMA_PROPERTY_VALUE_PTR (parameters_map_prop_p)->value = ecma_make_object_value (map_p);
178178

179179
ecma_property_t *scope_prop_p = ecma_create_internal_property (map_p,
180180
ECMA_INTERNAL_PROPERTY_SCOPE);
181-
ECMA_SET_POINTER (ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value, lex_env_p);
181+
ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value = ecma_make_object_value (lex_env_p);
182182

183183
ecma_deref_object (map_p);
184184
}
@@ -285,8 +285,9 @@ ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap]
285285
equal to mapped argument's name */
286286
{
287287
ecma_property_t *scope_prop_p = ecma_get_internal_property (map_p, ECMA_INTERNAL_PROPERTY_SCOPE);
288-
ecma_object_t *lex_env_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
289-
ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value);
288+
289+
ecma_object_t *lex_env_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value);
290+
290291
JERRY_ASSERT (lex_env_p != NULL
291292
&& ecma_is_lexical_environment (lex_env_p));
292293

@@ -316,8 +317,8 @@ ecma_op_arguments_object_get (ecma_object_t *obj_p, /**< the object */
316317
{
317318
// 1.
318319
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
319-
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
320-
ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
320+
321+
ecma_object_t *map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
321322

322323
// 2.
323324
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
@@ -362,8 +363,8 @@ ecma_op_arguments_object_get_own_property (ecma_object_t *obj_p, /**< the object
362363

363364
// 3.
364365
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
365-
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
366-
ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
366+
367+
ecma_object_t *map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
367368

368369
// 4.
369370
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
@@ -402,8 +403,8 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj
402403
{
403404
// 1.
404405
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
405-
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
406-
ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
406+
407+
ecma_object_t *map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
407408

408409
// 2.
409410
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
@@ -443,8 +444,8 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj
443444
{
444445
/* emulating execution of function described by MakeArgSetter */
445446
ecma_property_t *scope_prop_p = ecma_get_internal_property (map_p, ECMA_INTERNAL_PROPERTY_SCOPE);
446-
ecma_object_t *lex_env_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
447-
ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value);
447+
448+
ecma_object_t *lex_env_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (scope_prop_p)->value);
448449

449450
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);
450451
ecma_value_t arg_name_prop_value = ecma_get_named_data_property_value (mapped_prop_p);
@@ -500,8 +501,8 @@ ecma_op_arguments_object_delete (ecma_object_t *obj_p, /**< the object */
500501
{
501502
// 1.
502503
ecma_property_t *map_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PARAMETERS_MAP);
503-
ecma_object_t *map_p = ECMA_GET_NON_NULL_POINTER (ecma_object_t,
504-
ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
504+
505+
ecma_object_t *map_p = ecma_get_object_from_value (ECMA_PROPERTY_VALUE_PTR (map_prop_p)->value);
505506

506507
// 2.
507508
ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p);

0 commit comments

Comments
 (0)