Introducing ecma_is_value_{number,string,object} for checking type of ecma-value.
This commit is contained in:
@@ -79,7 +79,7 @@ ecma_op_create_array_object (ecma_value_t *arguments_list_p, /**< list of argume
|
||||
|
||||
if (is_treat_single_arg_as_length
|
||||
&& arguments_list_len == 1
|
||||
&& arguments_list_p[0].value_type == ECMA_TYPE_NUMBER)
|
||||
&& ecma_is_value_number (arguments_list_p[0]))
|
||||
{
|
||||
ecma_number_t *num_p = ECMA_GET_NON_NULL_POINTER (arguments_list_p[0].value);
|
||||
uint32_t num_uint32 = ecma_number_to_uint32 (*num_p);
|
||||
@@ -185,7 +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 (old_len_value.value_type == ECMA_TYPE_NUMBER);
|
||||
JERRY_ASSERT (ecma_is_value_number (old_len_value));
|
||||
|
||||
ecma_number_t *num_p = ECMA_GET_NON_NULL_POINTER (old_len_value.value);
|
||||
uint32_t old_len_uint32 = ecma_number_to_uint32 (*num_p);
|
||||
@@ -215,7 +215,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
||||
}
|
||||
|
||||
JERRY_ASSERT (ecma_is_completion_value_normal (completion)
|
||||
&& completion.u.value.value_type == ECMA_TYPE_NUMBER);
|
||||
&& ecma_is_value_number (completion.u.value));
|
||||
|
||||
new_len_num = *(ecma_number_t*) ECMA_GET_NON_NULL_POINTER (completion.u.value.value);
|
||||
|
||||
@@ -315,7 +315,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o
|
||||
// iii
|
||||
if (ecma_is_completion_value_normal_false (delete_succeeded))
|
||||
{
|
||||
JERRY_ASSERT (new_len_property_desc.value.value_type == ECMA_TYPE_NUMBER);
|
||||
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);
|
||||
|
||||
|
||||
@@ -41,16 +41,16 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */
|
||||
const bool is_x_undefined = ecma_is_value_undefined (x);
|
||||
const bool is_x_null = ecma_is_value_null (x);
|
||||
const bool is_x_boolean = ecma_is_value_boolean (x);
|
||||
const bool is_x_number = (x.value_type == ECMA_TYPE_NUMBER);
|
||||
const bool is_x_string = (x.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_x_object = (x.value_type == ECMA_TYPE_OBJECT);
|
||||
const bool is_x_number = ecma_is_value_number (x);
|
||||
const bool is_x_string = ecma_is_value_string (x);
|
||||
const bool is_x_object = ecma_is_value_object (x);
|
||||
|
||||
const bool is_y_undefined = ecma_is_value_undefined (y);
|
||||
const bool is_y_null = ecma_is_value_null (y);
|
||||
const bool is_y_boolean = ecma_is_value_boolean (y);
|
||||
const bool is_y_number = (y.value_type == ECMA_TYPE_NUMBER);
|
||||
const bool is_y_string = (y.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_y_object = (y.value_type == ECMA_TYPE_OBJECT);
|
||||
const bool is_y_number = ecma_is_value_number (y);
|
||||
const bool is_y_string = ecma_is_value_string (y);
|
||||
const bool is_y_object = ecma_is_value_object (y);
|
||||
|
||||
const bool is_types_equal = ((is_x_undefined && is_y_undefined)
|
||||
|| (is_x_null && is_y_null)
|
||||
@@ -222,16 +222,16 @@ ecma_op_strict_equality_compare (ecma_value_t x, /**< first operand */
|
||||
const bool is_x_undefined = ecma_is_value_undefined (x);
|
||||
const bool is_x_null = ecma_is_value_null (x);
|
||||
const bool is_x_boolean = ecma_is_value_boolean (x);
|
||||
const bool is_x_number = (x.value_type == ECMA_TYPE_NUMBER);
|
||||
const bool is_x_string = (x.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_x_object = (x.value_type == ECMA_TYPE_OBJECT);
|
||||
const bool is_x_number = ecma_is_value_number (x);
|
||||
const bool is_x_string = ecma_is_value_string (x);
|
||||
const bool is_x_object = ecma_is_value_object (x);
|
||||
|
||||
const bool is_y_undefined = ecma_is_value_undefined (y);
|
||||
const bool is_y_null = ecma_is_value_null (y);
|
||||
const bool is_y_boolean = ecma_is_value_boolean (y);
|
||||
const bool is_y_number = (y.value_type == ECMA_TYPE_NUMBER);
|
||||
const bool is_y_string = (y.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_y_object = (y.value_type == ECMA_TYPE_OBJECT);
|
||||
const bool is_y_number = ecma_is_value_number (y);
|
||||
const bool is_y_string = ecma_is_value_string (y);
|
||||
const bool is_y_object = ecma_is_value_object (y);
|
||||
|
||||
const bool is_types_equal = ((is_x_undefined && is_y_undefined)
|
||||
|| (is_x_null && is_y_null)
|
||||
@@ -338,8 +338,8 @@ ecma_op_abstract_relational_compare (ecma_value_t x, /**< first operand */
|
||||
px = left_first ? prim_first_converted_value : prim_second_converted_value;
|
||||
py = left_first ? prim_second_converted_value : prim_first_converted_value;
|
||||
|
||||
const bool is_px_string = (px.u.value.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_py_string = (py.u.value.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_px_string = ecma_is_value_string (px.u.value);
|
||||
const bool is_py_string = ecma_is_value_string (py.u.value);
|
||||
|
||||
if (!(is_px_string && is_py_string))
|
||||
{
|
||||
|
||||
@@ -99,16 +99,16 @@ ecma_op_same_value (ecma_value_t x, /**< ecma-value */
|
||||
const bool is_x_undefined = ecma_is_value_undefined (x);
|
||||
const bool is_x_null = ecma_is_value_null (x);
|
||||
const bool is_x_boolean = ecma_is_value_boolean (x);
|
||||
const bool is_x_number = (x.value_type == ECMA_TYPE_NUMBER);
|
||||
const bool is_x_string = (x.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_x_object = (x.value_type == ECMA_TYPE_OBJECT);
|
||||
const bool is_x_number = ecma_is_value_number (x);
|
||||
const bool is_x_string = ecma_is_value_string (x);
|
||||
const bool is_x_object = ecma_is_value_object (x);
|
||||
|
||||
const bool is_y_undefined = ecma_is_value_undefined (y);
|
||||
const bool is_y_null = ecma_is_value_null (y);
|
||||
const bool is_y_boolean = ecma_is_value_boolean (y);
|
||||
const bool is_y_number = (y.value_type == ECMA_TYPE_NUMBER);
|
||||
const bool is_y_string = (y.value_type == ECMA_TYPE_STRING);
|
||||
const bool is_y_object = (y.value_type == ECMA_TYPE_OBJECT);
|
||||
const bool is_y_number = ecma_is_value_number (y);
|
||||
const bool is_y_string = ecma_is_value_string (y);
|
||||
const bool is_y_object = ecma_is_value_object (y);
|
||||
|
||||
const bool is_types_equal = ((is_x_undefined && is_y_undefined)
|
||||
|| (is_x_null && is_y_null)
|
||||
@@ -361,7 +361,7 @@ ecma_op_to_number (ecma_value_t value) /**< ecma-value */
|
||||
ecma_completion_value_t
|
||||
ecma_op_to_string (ecma_value_t value) /**< ecma-value */
|
||||
{
|
||||
if (unlikely (value.value_type == ECMA_TYPE_OBJECT))
|
||||
if (unlikely (ecma_is_value_object (value)))
|
||||
{
|
||||
ecma_completion_value_t ret_value;
|
||||
|
||||
@@ -643,7 +643,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */
|
||||
ecma_completion_value_t ret_value = ecma_make_empty_completion_value ();
|
||||
|
||||
// 1.
|
||||
if (obj_value.value_type != ECMA_TYPE_OBJECT)
|
||||
if (!ecma_is_value_object (obj_value))
|
||||
{
|
||||
ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE));
|
||||
}
|
||||
@@ -804,7 +804,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */
|
||||
}
|
||||
else
|
||||
{
|
||||
JERRY_ASSERT (get_prop_value.u.value.value_type == ECMA_TYPE_OBJECT);
|
||||
JERRY_ASSERT (ecma_is_value_object (get_prop_value.u.value));
|
||||
|
||||
ecma_object_t *get_p = ECMA_GET_NON_NULL_POINTER (get_prop_value.u.value.value);
|
||||
ecma_ref_object (get_p);
|
||||
@@ -848,7 +848,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */
|
||||
}
|
||||
else
|
||||
{
|
||||
JERRY_ASSERT (set_prop_value.u.value.value_type == ECMA_TYPE_OBJECT);
|
||||
JERRY_ASSERT (ecma_is_value_object (set_prop_value.u.value));
|
||||
|
||||
ecma_object_t *set_p = ECMA_GET_NON_NULL_POINTER (set_prop_value.u.value.value);
|
||||
ecma_ref_object (set_p);
|
||||
|
||||
@@ -89,7 +89,7 @@ ecma_unpack_code_internal_property_value (uint32_t value, /**< packed value */
|
||||
bool
|
||||
ecma_op_is_callable (ecma_value_t value) /**< ecma-value */
|
||||
{
|
||||
if (value.value_type != ECMA_TYPE_OBJECT)
|
||||
if (!ecma_is_value_object (value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -113,7 +113,7 @@ ecma_op_is_callable (ecma_value_t value) /**< ecma-value */
|
||||
bool
|
||||
ecma_is_constructor (ecma_value_t value) /**< ecma-value */
|
||||
{
|
||||
if (value.value_type != ECMA_TYPE_OBJECT)
|
||||
if (!ecma_is_value_object (value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -338,7 +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 (formal_parameter_name_value.value_type == ECMA_TYPE_STRING);
|
||||
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);
|
||||
|
||||
bool arg_already_declared = ecma_op_has_binding (env_p, formal_parameter_name_string_p);
|
||||
@@ -390,7 +390,7 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object *
|
||||
|
||||
if (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_FUNCTION)
|
||||
{
|
||||
if (value.value_type != ECMA_TYPE_OBJECT)
|
||||
if (!ecma_is_value_object (value))
|
||||
{
|
||||
return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE);
|
||||
}
|
||||
@@ -406,7 +406,7 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object *
|
||||
ecma_op_object_get (func_obj_p, prototype_magic_string_p),
|
||||
ret_value);
|
||||
|
||||
if (prototype_obj_value.u.value.value_type != ECMA_TYPE_OBJECT)
|
||||
if (!ecma_is_value_object (prototype_obj_value.u.value))
|
||||
{
|
||||
ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE));
|
||||
}
|
||||
@@ -597,7 +597,7 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */
|
||||
|
||||
// 6.
|
||||
ecma_object_t *prototype_p;
|
||||
if (func_obj_prototype_prop_value.u.value.value_type == ECMA_TYPE_OBJECT)
|
||||
if (ecma_is_value_object (func_obj_prototype_prop_value.u.value))
|
||||
{
|
||||
prototype_p = ECMA_GET_NON_NULL_POINTER (func_obj_prototype_prop_value.u.value.value);
|
||||
ecma_ref_object (prototype_p);
|
||||
@@ -628,7 +628,7 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */
|
||||
ecma_value_t obj_value;
|
||||
|
||||
// 9.
|
||||
if (call_completion.u.value.value_type == ECMA_TYPE_OBJECT)
|
||||
if (ecma_is_value_object (call_completion.u.value))
|
||||
{
|
||||
ecma_deref_object (obj_p);
|
||||
|
||||
|
||||
@@ -80,9 +80,9 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */
|
||||
const ecma_value_t base = ref.base;
|
||||
const bool is_unresolvable_reference = ecma_is_value_undefined (base);
|
||||
const bool has_primitive_base = (ecma_is_value_boolean (base)
|
||||
|| base.value_type == ECMA_TYPE_NUMBER
|
||||
|| base.value_type == ECMA_TYPE_STRING);
|
||||
const bool has_object_base = (base.value_type == ECMA_TYPE_OBJECT
|
||||
|| 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))));
|
||||
const bool is_property_reference = has_primitive_base || has_object_base;
|
||||
|
||||
@@ -207,9 +207,9 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */
|
||||
const ecma_value_t base = ref.base;
|
||||
const bool is_unresolvable_reference = ecma_is_value_undefined (base);
|
||||
const bool has_primitive_base = (ecma_is_value_boolean (base)
|
||||
|| base.value_type == ECMA_TYPE_NUMBER
|
||||
|| base.value_type == ECMA_TYPE_STRING);
|
||||
const bool has_object_base = (base.value_type == ECMA_TYPE_OBJECT
|
||||
|| 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))));
|
||||
const bool is_property_reference = has_primitive_base || has_object_base;
|
||||
|
||||
|
||||
@@ -467,8 +467,7 @@ ecma_op_create_immutable_binding (ecma_object_t *lex_env_p, /**< lexical environ
|
||||
|
||||
JERRY_ASSERT(ecma_is_value_undefined (prop_p->u.named_data_property.value));
|
||||
|
||||
prop_p->u.named_data_property.value.value_type = ECMA_TYPE_SIMPLE;
|
||||
prop_p->u.named_data_property.value.value = ECMA_SIMPLE_VALUE_EMPTY;
|
||||
prop_p->u.named_data_property.value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ ecma_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function */
|
||||
JERRY_ASSERT (formal_params_iter_p->current_value_p != NULL);
|
||||
JERRY_ASSERT (param_index < formal_params_number);
|
||||
|
||||
JERRY_ASSERT (formal_params_iter_p->current_value_p->value_type == ECMA_TYPE_STRING);
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -283,7 +283,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 (arg_name_prop_value.value_type == ECMA_TYPE_STRING);
|
||||
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_completion_value_t completion = ecma_op_get_binding_value (lex_env_p,
|
||||
|
||||
@@ -621,7 +621,7 @@ ecma_op_general_object_default_value (ecma_object_t *obj_p, /**< the object */
|
||||
}
|
||||
|
||||
if (!ecma_is_completion_value_empty (call_completion)
|
||||
&& call_completion.u.value.value_type != ECMA_TYPE_OBJECT)
|
||||
&& !ecma_is_value_object (call_completion.u.value))
|
||||
{
|
||||
return call_completion;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ ecma_op_create_string_object (ecma_value_t *arguments_list_p, /**< list of argum
|
||||
{
|
||||
JERRY_ASSERT (ecma_is_completion_value_normal (to_str_arg_value));
|
||||
|
||||
JERRY_ASSERT (to_str_arg_value.u.value.value_type == ECMA_TYPE_STRING);
|
||||
JERRY_ASSERT (ecma_is_value_string (to_str_arg_value.u.value));
|
||||
prim_prop_str_value_p = ECMA_GET_NON_NULL_POINTER (to_str_arg_value.u.value.value);
|
||||
|
||||
int32_t string_len = ecma_string_get_length (prim_prop_str_value_p);
|
||||
|
||||
Reference in New Issue
Block a user