From a0a2ec2cea92c88b9ac19359adbbf975c2d850eb Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Fri, 26 Sep 2014 18:04:42 +0400 Subject: [PATCH] Replacing items of ecma_object_class_t with corresponding ecma magic strings. --- .../ecma-builtin-array-object.c | 2 +- .../ecma-builtin-string-prototype-object.c | 2 +- src/libecmabuiltins/ecma-builtins-internal.h | 14 ++++++------- src/libecmabuiltins/ecma-builtins.c | 4 ++-- src/libecmaobjects/ecma-globals.h | 20 +------------------ src/libecmaobjects/ecma-helpers-string.c | 1 + src/libecmaoperations/ecma-array-object.c | 2 +- src/libecmaoperations/ecma-function-object.c | 4 ++-- .../ecma-objects-arguments.c | 2 +- src/libecmaoperations/ecma-objects-general.c | 6 +++--- src/libecmaoperations/ecma-string-object.c | 2 +- 11 files changed, 21 insertions(+), 38 deletions(-) diff --git a/src/libecmabuiltins/ecma-builtin-array-object.c b/src/libecmabuiltins/ecma-builtin-array-object.c index e9752d3bc..b57648e38 100644 --- a/src/libecmabuiltins/ecma-builtin-array-object.c +++ b/src/libecmabuiltins/ecma-builtin-array-object.c @@ -94,7 +94,7 @@ ecma_builtin_array_object_is_array (ecma_value_t arg) /**< first argument */ ecma_property_t *class_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - if (class_prop_p->u.internal_property.value == ECMA_OBJECT_CLASS_ARRAY) + if (class_prop_p->u.internal_property.value == ECMA_MAGIC_STRING_ARRAY_UL) { is_array = ECMA_SIMPLE_VALUE_TRUE; } diff --git a/src/libecmabuiltins/ecma-builtin-string-prototype-object.c b/src/libecmabuiltins/ecma-builtin-string-prototype-object.c index 83105407c..db9eabfea 100644 --- a/src/libecmabuiltins/ecma-builtin-string-prototype-object.c +++ b/src/libecmabuiltins/ecma-builtin-string-prototype-object.c @@ -167,7 +167,7 @@ ecma_builtin_string_prototype_object_to_string (ecma_value_t this) /**< this arg ecma_property_t *class_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - if (class_prop_p->u.internal_property.value == ECMA_OBJECT_CLASS_STRING) + if (class_prop_p->u.internal_property.value == ECMA_MAGIC_STRING_STRING_UL) { ecma_property_t *prim_value_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE); diff --git a/src/libecmabuiltins/ecma-builtins-internal.h b/src/libecmabuiltins/ecma-builtins-internal.h index 96ff05710..d9566b56f 100644 --- a/src/libecmabuiltins/ecma-builtins-internal.h +++ b/src/libecmabuiltins/ecma-builtins-internal.h @@ -61,37 +61,37 @@ ecma_builtin_bin_search_for_magic_string_id_in_array (const ecma_magic_string_id #define ECMA_BUILTIN_LIST(macro) \ macro (OBJECT_PROTOTYPE, \ TYPE_GENERAL, \ - CLASS_OBJECT, \ + OBJECT_UL, \ ECMA_BUILTIN_ID__COUNT /* no prototype */, \ object_prototype) \ macro (STRING_PROTOTYPE, \ TYPE_GENERAL, \ - CLASS_STRING, \ + STRING_UL, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \ string_prototype) \ macro (OBJECT, \ TYPE_FUNCTION, \ - CLASS_OBJECT, \ + OBJECT_UL, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \ object) \ macro (MATH, \ TYPE_GENERAL, \ - CLASS_MATH, \ + MATH_UL, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \ math) \ macro (ARRAY, \ TYPE_FUNCTION, \ - CLASS_ARRAY, \ + ARRAY_UL, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_ARRAY_PROTOTYPE */, \ array) \ macro (STRING, \ TYPE_FUNCTION, \ - CLASS_STRING, \ + STRING_UL, \ ECMA_BUILTIN_ID_STRING_PROTOTYPE, \ string) \ macro (GLOBAL, \ TYPE_GENERAL, \ - CLASS_OBJECT, \ + OBJECT_UL, \ ECMA_BUILTIN_ID__COUNT /* no prototype */, \ global) diff --git a/src/libecmabuiltins/ecma-builtins.c b/src/libecmabuiltins/ecma-builtins.c index 329fc3df7..87d8c5a8d 100644 --- a/src/libecmabuiltins/ecma-builtins.c +++ b/src/libecmabuiltins/ecma-builtins.c @@ -88,7 +88,7 @@ static ecma_object_t* ecma_builtin_init_object (ecma_builtin_id_t obj_builtin_id, /**< built-in ID */ ecma_object_t* prototype_obj_p, /**< prototype object */ ecma_object_type_t obj_type, /**< object's type */ - ecma_object_class_t obj_class, /**< object's class */ + ecma_magic_string_id_t obj_class, /**< object's class */ ecma_length_t property_number) /**< number of the object's properties */ { ecma_object_t *object_obj_p = ecma_create_object (prototype_obj_p, true, obj_type); @@ -155,7 +155,7 @@ ecma_init_builtins (void) ecma_object_t *builtin_obj_p = ecma_builtin_init_object (ECMA_BUILTIN_ID_ ## builtin_id, \ prototype_obj_p, \ ECMA_OBJECT_ ## object_type, \ - ECMA_OBJECT_ ## object_class, \ + ECMA_MAGIC_STRING_ ## object_class, \ ecma_builtin_ ## lowercase_name ## _property_number); \ ecma_builtin_objects [ECMA_BUILTIN_ID_ ## builtin_id] = builtin_obj_p; \ } diff --git a/src/libecmaobjects/ecma-globals.h b/src/libecmaobjects/ecma-globals.h index 20530db49..a751c6896 100644 --- a/src/libecmaobjects/ecma-globals.h +++ b/src/libecmaobjects/ecma-globals.h @@ -336,25 +336,6 @@ typedef enum ECMA_OBJECT_TYPE_HOST /**< Host object */ } ecma_object_type_t; -/** - * ECMA-defined object classes - */ -typedef enum -{ - ECMA_OBJECT_CLASS_OBJECT, /**< "Object" */ - ECMA_OBJECT_CLASS_FUNCTION, /**< "Function" */ - ECMA_OBJECT_CLASS_ARGUMENTS, /**< "Arguments" */ - ECMA_OBJECT_CLASS_ARRAY, /**< "Array" */ - ECMA_OBJECT_CLASS_BOOLEAN, /**< "Boolean" */ - ECMA_OBJECT_CLASS_DATE, /**< "Date" */ - ECMA_OBJECT_CLASS_ERROR, /**< "Error" */ - ECMA_OBJECT_CLASS_JSON, /**< "JSON" */ - ECMA_OBJECT_CLASS_MATH, /**< "Math" */ - ECMA_OBJECT_CLASS_NUMBER, /**< "Number" */ - ECMA_OBJECT_CLASS_REGEXP, /**< "RegExp" */ - ECMA_OBJECT_CLASS_STRING /**< "String" */ -} ecma_object_class_t; - /** * Description of ECMA-object or lexical environment * (depending on is_lexical_environment). @@ -676,6 +657,7 @@ typedef enum ECMA_MAGIC_STRING_OBJECT_UL, /**< "Object" */ ECMA_MAGIC_STRING_FUNCTION_UL, /**< "Function" */ ECMA_MAGIC_STRING_ARRAY_UL, /**< "Array" */ + ECMA_MAGIC_STRING_ARGUMENTS_UL, /**< "Arguments" */ ECMA_MAGIC_STRING_STRING_UL, /**< "String" */ ECMA_MAGIC_STRING_BOOLEAN_UL, /**< "Boolean" */ ECMA_MAGIC_STRING_NUMBER_UL, /**< "Number" */ diff --git a/src/libecmaobjects/ecma-helpers-string.c b/src/libecmaobjects/ecma-helpers-string.c index 5b3b072c7..a0bc8b735 100644 --- a/src/libecmaobjects/ecma-helpers-string.c +++ b/src/libecmaobjects/ecma-helpers-string.c @@ -1272,6 +1272,7 @@ ecma_get_magic_string_zt (ecma_magic_string_id_t id) /**< magic string id */ case ECMA_MAGIC_STRING_OBJECT_UL: return (ecma_char_t*) "Object"; case ECMA_MAGIC_STRING_FUNCTION_UL: return (ecma_char_t*) "Function"; case ECMA_MAGIC_STRING_ARRAY_UL: return (ecma_char_t*) "Array"; + case ECMA_MAGIC_STRING_ARGUMENTS_UL: return (ecma_char_t*) "Arguments"; case ECMA_MAGIC_STRING_STRING_UL: return (ecma_char_t*) "String"; case ECMA_MAGIC_STRING_BOOLEAN_UL: return (ecma_char_t*) "Boolean"; case ECMA_MAGIC_STRING_NUMBER_UL: return (ecma_char_t*) "Number"; diff --git a/src/libecmaoperations/ecma-array-object.c b/src/libecmaoperations/ecma-array-object.c index e958c6cfe..c2f26c543 100644 --- a/src/libecmaoperations/ecma-array-object.c +++ b/src/libecmaoperations/ecma-array-object.c @@ -103,7 +103,7 @@ ecma_op_create_array_object (ecma_value_t *arguments_list_p, /**< list of argume ecma_object_t *obj_p = ecma_create_object (NULL, true, ECMA_OBJECT_TYPE_ARRAY); ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - class_prop_p->u.internal_property.value = ECMA_OBJECT_CLASS_ARRAY; + class_prop_p->u.internal_property.value = ECMA_MAGIC_STRING_ARRAY_UL; ecma_string_t *length_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_LENGTH); ecma_number_t *length_num_p = ecma_alloc_number (); diff --git a/src/libecmaoperations/ecma-function-object.c b/src/libecmaoperations/ecma-function-object.c index 1186f5b8d..5c21f0100 100644 --- a/src/libecmaoperations/ecma-function-object.c +++ b/src/libecmaoperations/ecma-function-object.c @@ -155,7 +155,7 @@ ecma_op_create_function_object (ecma_string_t* formal_parameter_list_p[], /**< f // 3. ecma_property_t *class_prop_p = ecma_create_internal_property (f, ECMA_INTERNAL_PROPERTY_CLASS); - class_prop_p->u.internal_property.value = ECMA_OBJECT_CLASS_FUNCTION; + class_prop_p->u.internal_property.value = ECMA_MAGIC_STRING_FUNCTION_UL; // 9. ecma_property_t *scope_prop_p = ecma_create_internal_property (f, ECMA_INTERNAL_PROPERTY_SCOPE); @@ -615,7 +615,7 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */ // 3. ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - class_prop_p->u.internal_property.value = ECMA_OBJECT_CLASS_FUNCTION; + class_prop_p->u.internal_property.value = ECMA_MAGIC_STRING_FUNCTION_UL; ecma_deref_object (prototype_p); diff --git a/src/libecmaoperations/ecma-objects-arguments.c b/src/libecmaoperations/ecma-objects-arguments.c index 3dec3a458..c37ffa0cf 100644 --- a/src/libecmaoperations/ecma-objects-arguments.c +++ b/src/libecmaoperations/ecma-objects-arguments.c @@ -59,7 +59,7 @@ ecma_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function */ // 4. ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - class_prop_p->u.internal_property.value = ECMA_OBJECT_CLASS_ARGUMENTS; + class_prop_p->u.internal_property.value = ECMA_MAGIC_STRING_ARGUMENTS_UL; // 7. ecma_property_descriptor_t prop_desc = ecma_make_empty_property_descriptor (); diff --git a/src/libecmaoperations/ecma-objects-general.c b/src/libecmaoperations/ecma-objects-general.c index 4556b4953..41faf6ec0 100644 --- a/src/libecmaoperations/ecma-objects-general.c +++ b/src/libecmaoperations/ecma-objects-general.c @@ -64,7 +64,7 @@ ecma_op_create_object_object_noarg (void) ecma_object_t *obj_p = ecma_create_object (NULL, true, ECMA_OBJECT_TYPE_GENERAL); ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - class_prop_p->u.internal_property.value = ECMA_OBJECT_CLASS_OBJECT; + class_prop_p->u.internal_property.value = ECMA_MAGIC_STRING_OBJECT_UL; return obj_p; } /* ecma_op_create_object_object_noarg */ @@ -558,9 +558,9 @@ ecma_op_general_object_default_value (ecma_object_t *obj_p, /**< the object */ { ecma_property_t *class_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - ecma_object_class_t obj_class = (ecma_object_class_t) class_prop_p->u.internal_property.value; + ecma_magic_string_id_t obj_class = (ecma_magic_string_id_t) class_prop_p->u.internal_property.value; - if (obj_class == ECMA_OBJECT_CLASS_DATE) + if (obj_class == ECMA_MAGIC_STRING_DATE_UL) { hint = ECMA_PREFERRED_TYPE_STRING; } diff --git a/src/libecmaoperations/ecma-string-object.c b/src/libecmaoperations/ecma-string-object.c index 9b3394e7b..1a42e8e44 100644 --- a/src/libecmaoperations/ecma-string-object.c +++ b/src/libecmaoperations/ecma-string-object.c @@ -76,7 +76,7 @@ ecma_op_create_string_object (ecma_value_t *arguments_list_p, /**< list of argum ecma_deref_object (prototype_obj_p); ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); - class_prop_p->u.internal_property.value = ECMA_OBJECT_CLASS_STRING; + class_prop_p->u.internal_property.value = ECMA_MAGIC_STRING_STRING_UL; ecma_property_t *prim_value_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE);