Representing ecma_value_t as integer instead of structure with bit-fields, adding corresponding field accessors.
This commit is contained in:
@@ -81,7 +81,7 @@ ecma_op_create_array_object (ecma_value_t *arguments_list_p, /**< list of argume
|
||||
&& arguments_list_len == 1
|
||||
&& ecma_is_value_number (arguments_list_p[0]))
|
||||
{
|
||||
ecma_number_t *num_p = ECMA_GET_NON_NULL_POINTER (arguments_list_p[0].value);
|
||||
ecma_number_t *num_p = ecma_get_number_from_value (arguments_list_p[0]);
|
||||
uint32_t num_uint32 = ecma_number_to_uint32 (*num_p);
|
||||
if (*num_p != ecma_uint32_to_number (num_uint32))
|
||||
{
|
||||
@@ -185,9 +185,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
||||
// 2.
|
||||
ecma_value_t old_len_value = len_prop_p->u.named_data_property.value;
|
||||
|
||||
JERRY_ASSERT (ecma_is_value_number (old_len_value));
|
||||
|
||||
ecma_number_t *num_p = ECMA_GET_NON_NULL_POINTER (old_len_value.value);
|
||||
ecma_number_t *num_p = ecma_get_number_from_value (old_len_value);
|
||||
uint32_t old_len_uint32 = ecma_number_to_uint32 (*num_p);
|
||||
|
||||
// 3.
|
||||
@@ -317,7 +315,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
||||
{
|
||||
JERRY_ASSERT (ecma_is_value_number (new_len_property_desc.value));
|
||||
|
||||
ecma_number_t *new_len_num_p = ECMA_GET_NON_NULL_POINTER (new_len_property_desc.value.value);
|
||||
ecma_number_t *new_len_num_p = ecma_get_number_from_value (new_len_property_desc.value);
|
||||
|
||||
// 1.
|
||||
*new_len_num_p = ecma_uint32_to_number (old_len_uint32 + 1);
|
||||
|
||||
@@ -48,9 +48,8 @@ ecma_op_create_boolean_object (ecma_value_t arg) /**< argument passed to the Boo
|
||||
return conv_to_boolean_completion;
|
||||
}
|
||||
|
||||
ecma_simple_value_t bool_value = ecma_get_completion_value_value (conv_to_boolean_completion).value;
|
||||
|
||||
JERRY_ASSERT (bool_value == ECMA_SIMPLE_VALUE_TRUE || bool_value == ECMA_SIMPLE_VALUE_FALSE);
|
||||
ecma_simple_value_t bool_value = (ecma_is_value_true (ecma_get_completion_value_value (conv_to_boolean_completion)) ?
|
||||
ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE);
|
||||
|
||||
#ifndef CONFIG_ECMA_COMPACT_PROFILE_DISABLE_BOOLEAN_BUILTIN
|
||||
ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE);
|
||||
|
||||
@@ -73,8 +73,8 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */
|
||||
}
|
||||
else if (is_x_number)
|
||||
{ // c.
|
||||
ecma_number_t x_num = *(ecma_number_t*)(ECMA_GET_NON_NULL_POINTER(x.value));
|
||||
ecma_number_t y_num = *(ecma_number_t*)(ECMA_GET_NON_NULL_POINTER(y.value));
|
||||
ecma_number_t x_num = *ecma_get_number_from_value (x);
|
||||
ecma_number_t y_num = *ecma_get_number_from_value (y);
|
||||
|
||||
bool is_equal;
|
||||
|
||||
@@ -98,8 +98,8 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */
|
||||
}
|
||||
else if (is_x_string)
|
||||
{ // d.
|
||||
ecma_string_t* x_str_p = ECMA_GET_NON_NULL_POINTER(x.value);
|
||||
ecma_string_t* y_str_p = ECMA_GET_NON_NULL_POINTER(y.value);
|
||||
ecma_string_t* x_str_p = ecma_get_string_from_value (x);
|
||||
ecma_string_t* y_str_p = ecma_get_string_from_value (y);
|
||||
|
||||
bool is_equal = ecma_compare_ecma_strings (x_str_p, y_str_p);
|
||||
|
||||
@@ -107,7 +107,7 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */
|
||||
}
|
||||
else if (is_x_boolean)
|
||||
{ // e.
|
||||
bool is_equal = (x.value == y.value);
|
||||
bool is_equal = (ecma_is_value_true (x) == ecma_is_value_true (y));
|
||||
|
||||
ret_value = ecma_make_simple_completion_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
@@ -115,7 +115,7 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */
|
||||
{ // f.
|
||||
JERRY_ASSERT(is_x_object);
|
||||
|
||||
bool is_equal = (x.value == y.value);
|
||||
bool is_equal = (ecma_get_object_from_value (x) == ecma_get_object_from_value (y));
|
||||
|
||||
ret_value = ecma_make_simple_completion_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
@@ -267,8 +267,8 @@ ecma_op_strict_equality_compare (ecma_value_t x, /**< first operand */
|
||||
// d. If x is +0 and y is -0, return true.
|
||||
// e. If x is -0 and y is +0, return true.
|
||||
|
||||
ecma_number_t x_num = *(ecma_number_t*) (ECMA_GET_NON_NULL_POINTER (x.value));
|
||||
ecma_number_t y_num = *(ecma_number_t*) (ECMA_GET_NON_NULL_POINTER (y.value));
|
||||
ecma_number_t x_num = *ecma_get_number_from_value (x);
|
||||
ecma_number_t y_num = *ecma_get_number_from_value (y);
|
||||
|
||||
if (ecma_number_is_nan (x_num)
|
||||
|| ecma_number_is_nan (y_num))
|
||||
@@ -291,8 +291,8 @@ ecma_op_strict_equality_compare (ecma_value_t x, /**< first operand */
|
||||
// (same length and same characters in corresponding positions); otherwise, return false.
|
||||
if (is_x_string)
|
||||
{
|
||||
ecma_string_t* x_str_p = ECMA_GET_NON_NULL_POINTER (x.value);
|
||||
ecma_string_t* y_str_p = ECMA_GET_NON_NULL_POINTER (y.value);
|
||||
ecma_string_t* x_str_p = ecma_get_string_from_value (x);
|
||||
ecma_string_t* y_str_p = ecma_get_string_from_value (y);
|
||||
|
||||
return ecma_compare_ecma_strings (x_str_p, y_str_p);
|
||||
}
|
||||
@@ -300,13 +300,13 @@ ecma_op_strict_equality_compare (ecma_value_t x, /**< first operand */
|
||||
// 6. If Type (x) is Boolean, return true if x and y are both true or both false; otherwise, return false.
|
||||
if (is_x_boolean)
|
||||
{
|
||||
return (x.value == y.value);
|
||||
return (ecma_is_value_true (x) == ecma_is_value_true (y));
|
||||
}
|
||||
|
||||
// 7. Return true if x and y refer to the same object. Otherwise, return false.
|
||||
JERRY_ASSERT (is_x_object);
|
||||
|
||||
return (ECMA_GET_NON_NULL_POINTER (x.value) == ECMA_GET_NON_NULL_POINTER (y.value));
|
||||
return (ecma_get_object_from_value (x) == ecma_get_object_from_value (y));
|
||||
} /* ecma_op_strict_equality_compare */
|
||||
|
||||
/**
|
||||
|
||||
@@ -111,8 +111,8 @@ ecma_op_same_value (ecma_value_t x, /**< ecma-value */
|
||||
|
||||
if (is_x_number)
|
||||
{
|
||||
ecma_number_t *x_num_p = (ecma_number_t*)ECMA_GET_NON_NULL_POINTER(x.value);
|
||||
ecma_number_t *y_num_p = (ecma_number_t*)ECMA_GET_NON_NULL_POINTER(y.value);
|
||||
ecma_number_t *x_num_p = ecma_get_number_from_value (x);
|
||||
ecma_number_t *y_num_p = ecma_get_number_from_value (y);
|
||||
|
||||
if (ecma_number_is_nan (*x_num_p)
|
||||
&& ecma_number_is_nan (*y_num_p))
|
||||
@@ -131,8 +131,8 @@ ecma_op_same_value (ecma_value_t x, /**< ecma-value */
|
||||
|
||||
if (is_x_string)
|
||||
{
|
||||
ecma_string_t* x_str_p = ECMA_GET_NON_NULL_POINTER(x.value);
|
||||
ecma_string_t* y_str_p = ECMA_GET_NON_NULL_POINTER(y.value);
|
||||
ecma_string_t* x_str_p = ecma_get_string_from_value (x);
|
||||
ecma_string_t* y_str_p = ecma_get_string_from_value (y);
|
||||
|
||||
return ecma_compare_ecma_strings (x_str_p, y_str_p);
|
||||
}
|
||||
@@ -144,7 +144,7 @@ ecma_op_same_value (ecma_value_t x, /**< ecma-value */
|
||||
|
||||
JERRY_ASSERT(is_x_object);
|
||||
|
||||
return (ECMA_GET_NON_NULL_POINTER(x.value) == ECMA_GET_NON_NULL_POINTER(y.value));
|
||||
return (ecma_get_object_from_value (x) == ecma_get_object_from_value (y));
|
||||
} /* ecma_op_same_value */
|
||||
|
||||
/**
|
||||
@@ -164,7 +164,7 @@ ecma_op_to_primitive (ecma_value_t value, /**< ecma-value */
|
||||
|
||||
if (ecma_is_value_object (value))
|
||||
{
|
||||
ecma_object_t *obj_p = ECMA_GET_NON_NULL_POINTER (value.value);
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (value);
|
||||
|
||||
return ecma_op_object_default_value (obj_p, preferred_type);
|
||||
}
|
||||
@@ -193,7 +193,8 @@ ecma_op_to_boolean (ecma_value_t value) /**< ecma-value */
|
||||
|
||||
if (ecma_is_value_boolean (value))
|
||||
{
|
||||
ret_value = value.value;
|
||||
ret_value = (ecma_is_value_true (value) ?
|
||||
ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
else if (ecma_is_value_undefined (value)
|
||||
|| ecma_is_value_null (value))
|
||||
@@ -202,7 +203,7 @@ ecma_op_to_boolean (ecma_value_t value) /**< ecma-value */
|
||||
}
|
||||
else if (ecma_is_value_number (value))
|
||||
{
|
||||
ecma_number_t *num_p = ECMA_GET_NON_NULL_POINTER(value.value);
|
||||
ecma_number_t *num_p = ecma_get_number_from_value (value);
|
||||
|
||||
if (ecma_number_is_nan (*num_p)
|
||||
|| ecma_number_is_zero (*num_p))
|
||||
@@ -216,7 +217,7 @@ ecma_op_to_boolean (ecma_value_t value) /**< ecma-value */
|
||||
}
|
||||
else if (ecma_is_value_string (value))
|
||||
{
|
||||
ecma_string_t *str_p = ECMA_GET_NON_NULL_POINTER(value.value);
|
||||
ecma_string_t *str_p = ecma_get_string_from_value (value);
|
||||
|
||||
if (ecma_string_get_length (str_p) == 0)
|
||||
{
|
||||
@@ -257,7 +258,7 @@ ecma_op_to_number (ecma_value_t value) /**< ecma-value */
|
||||
}
|
||||
else if (ecma_is_value_string (value))
|
||||
{
|
||||
ecma_string_t *str_p = ECMA_GET_NON_NULL_POINTER (value.value);
|
||||
ecma_string_t *str_p = ecma_get_string_from_value (value);
|
||||
|
||||
ecma_number_t *num_p = ecma_alloc_number ();
|
||||
*num_p = ecma_string_to_number (str_p);
|
||||
@@ -342,12 +343,12 @@ ecma_op_to_string (ecma_value_t value) /**< ecma-value */
|
||||
|
||||
if (ecma_is_value_string (value))
|
||||
{
|
||||
res_p = ECMA_GET_NON_NULL_POINTER (value.value);
|
||||
res_p = ecma_get_string_from_value (value);
|
||||
res_p = ecma_copy_or_ref_ecma_string (res_p);
|
||||
}
|
||||
else if (ecma_is_value_number (value))
|
||||
{
|
||||
ecma_number_t *num_p = ECMA_GET_NON_NULL_POINTER (value.value);
|
||||
ecma_number_t *num_p = ecma_get_number_from_value (value);
|
||||
res_p = ecma_new_ecma_string_from_number (*num_p);
|
||||
}
|
||||
else if (ecma_is_value_undefined (value))
|
||||
@@ -570,7 +571,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */
|
||||
}
|
||||
else
|
||||
{
|
||||
ecma_object_t *obj_p = ECMA_GET_NON_NULL_POINTER (obj_value.value);
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (obj_value);
|
||||
|
||||
// 2.
|
||||
ecma_property_descriptor_t prop_desc = ecma_make_empty_property_descriptor ();
|
||||
|
||||
@@ -94,7 +94,7 @@ ecma_op_is_callable (ecma_value_t value) /**< ecma-value */
|
||||
return false;
|
||||
}
|
||||
|
||||
ecma_object_t *obj_p = ECMA_GET_NON_NULL_POINTER(value.value);
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (value);
|
||||
|
||||
JERRY_ASSERT(obj_p != NULL);
|
||||
JERRY_ASSERT(!ecma_is_lexical_environment (obj_p));
|
||||
@@ -118,7 +118,7 @@ ecma_is_constructor (ecma_value_t value) /**< ecma-value */
|
||||
return false;
|
||||
}
|
||||
|
||||
ecma_object_t *obj_p = ECMA_GET_NON_NULL_POINTER(value.value);
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (value);
|
||||
|
||||
JERRY_ASSERT(obj_p != NULL);
|
||||
JERRY_ASSERT(!ecma_is_lexical_environment (obj_p));
|
||||
@@ -338,8 +338,7 @@ ecma_function_call_setup_args_variables (ecma_object_t *func_obj_p, /**< Functio
|
||||
JERRY_ASSERT (is_moved);
|
||||
|
||||
ecma_value_t formal_parameter_name_value = *formal_params_iterator.current_value_p;
|
||||
JERRY_ASSERT (ecma_is_value_string (formal_parameter_name_value));
|
||||
ecma_string_t *formal_parameter_name_string_p = ECMA_GET_NON_NULL_POINTER (formal_parameter_name_value.value);
|
||||
ecma_string_t *formal_parameter_name_string_p = ecma_get_string_from_value (formal_parameter_name_value);
|
||||
|
||||
bool arg_already_declared = ecma_op_has_binding (env_p, formal_parameter_name_string_p);
|
||||
if (!arg_already_declared)
|
||||
@@ -395,8 +394,7 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object *
|
||||
return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
|
||||
ecma_object_t* v_obj_p = ECMA_GET_NON_NULL_POINTER (value.value);
|
||||
JERRY_ASSERT (v_obj_p != NULL);
|
||||
ecma_object_t* v_obj_p = ecma_get_object_from_value (value);
|
||||
|
||||
ecma_string_t *prototype_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_PROTOTYPE);
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */
|
||||
|| ecma_is_value_number (base)
|
||||
|| ecma_is_value_string (base));
|
||||
const bool has_object_base = (ecma_is_value_object (base)
|
||||
&& !(ecma_is_lexical_environment (ECMA_GET_NON_NULL_POINTER(base.value))));
|
||||
&& !(ecma_is_lexical_environment (ecma_get_object_from_value (base))));
|
||||
const bool is_property_reference = has_primitive_base || has_object_base;
|
||||
|
||||
JERRY_ASSERT (!is_unresolvable_reference);
|
||||
@@ -94,7 +94,7 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */
|
||||
{
|
||||
// 4.b case 1
|
||||
|
||||
ecma_object_t *obj_p = ECMA_GET_POINTER(base.value);
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (base);
|
||||
JERRY_ASSERT(obj_p != NULL
|
||||
&& !ecma_is_lexical_environment (obj_p));
|
||||
|
||||
@@ -210,7 +210,7 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */
|
||||
|| ecma_is_value_number (base)
|
||||
|| ecma_is_value_string (base));
|
||||
const bool has_object_base = (ecma_is_value_object (base)
|
||||
&& !(ecma_is_lexical_environment (ECMA_GET_NON_NULL_POINTER(base.value))));
|
||||
&& !(ecma_is_lexical_environment (ecma_get_object_from_value (base))));
|
||||
const bool is_property_reference = has_primitive_base || has_object_base;
|
||||
|
||||
JERRY_ASSERT (!is_unresolvable_reference);
|
||||
@@ -221,7 +221,7 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */
|
||||
{
|
||||
// 4.b case 1
|
||||
|
||||
ecma_object_t *obj_p = ECMA_GET_NON_NULL_POINTER(base.value);
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (base);
|
||||
JERRY_ASSERT (obj_p != NULL
|
||||
&& !ecma_is_lexical_environment (obj_p));
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ ecma_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function */
|
||||
JERRY_ASSERT (param_index < formal_params_number);
|
||||
|
||||
JERRY_ASSERT (ecma_is_value_string (*formal_params_iter_p->current_value_p));
|
||||
formal_params[param_index] = ECMA_GET_NON_NULL_POINTER (formal_params_iter_p->current_value_p->value);
|
||||
formal_params[param_index] = ecma_get_string_from_value (*formal_params_iter_p->current_value_p);
|
||||
}
|
||||
JERRY_ASSERT (param_index == formal_params_number);
|
||||
|
||||
@@ -285,8 +285,7 @@ ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap]
|
||||
|
||||
ecma_value_t arg_name_prop_value = arg_name_prop_p->u.named_data_property.value;
|
||||
|
||||
JERRY_ASSERT (ecma_is_value_string (arg_name_prop_value));
|
||||
ecma_string_t *arg_name_p = ECMA_GET_NON_NULL_POINTER (arg_name_prop_value.value);
|
||||
ecma_string_t *arg_name_p = ecma_get_string_from_value (arg_name_prop_value);
|
||||
|
||||
ecma_completion_value_t completion = ecma_op_get_binding_value (lex_env_p,
|
||||
arg_name_p,
|
||||
|
||||
Reference in New Issue
Block a user