Replacing items of ecma_object_class_t with corresponding ecma magic strings.

This commit is contained in:
Ruben Ayrapetyan 2014-09-26 18:04:42 +04:00
parent 897ed2d5c2
commit a0a2ec2cea
11 changed files with 21 additions and 38 deletions

View File

@ -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_property_t *class_prop_p = ecma_get_internal_property (obj_p,
ECMA_INTERNAL_PROPERTY_CLASS); 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; is_array = ECMA_SIMPLE_VALUE_TRUE;
} }

View File

@ -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); 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_property_t *prim_value_prop_p = ecma_get_internal_property (obj_p,
ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE); ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE);

View File

@ -61,37 +61,37 @@ ecma_builtin_bin_search_for_magic_string_id_in_array (const ecma_magic_string_id
#define ECMA_BUILTIN_LIST(macro) \ #define ECMA_BUILTIN_LIST(macro) \
macro (OBJECT_PROTOTYPE, \ macro (OBJECT_PROTOTYPE, \
TYPE_GENERAL, \ TYPE_GENERAL, \
CLASS_OBJECT, \ OBJECT_UL, \
ECMA_BUILTIN_ID__COUNT /* no prototype */, \ ECMA_BUILTIN_ID__COUNT /* no prototype */, \
object_prototype) \ object_prototype) \
macro (STRING_PROTOTYPE, \ macro (STRING_PROTOTYPE, \
TYPE_GENERAL, \ TYPE_GENERAL, \
CLASS_STRING, \ STRING_UL, \
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \
string_prototype) \ string_prototype) \
macro (OBJECT, \ macro (OBJECT, \
TYPE_FUNCTION, \ TYPE_FUNCTION, \
CLASS_OBJECT, \ OBJECT_UL, \
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \
object) \ object) \
macro (MATH, \ macro (MATH, \
TYPE_GENERAL, \ TYPE_GENERAL, \
CLASS_MATH, \ MATH_UL, \
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \
math) \ math) \
macro (ARRAY, \ macro (ARRAY, \
TYPE_FUNCTION, \ TYPE_FUNCTION, \
CLASS_ARRAY, \ ARRAY_UL, \
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_ARRAY_PROTOTYPE */, \ ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_ARRAY_PROTOTYPE */, \
array) \ array) \
macro (STRING, \ macro (STRING, \
TYPE_FUNCTION, \ TYPE_FUNCTION, \
CLASS_STRING, \ STRING_UL, \
ECMA_BUILTIN_ID_STRING_PROTOTYPE, \ ECMA_BUILTIN_ID_STRING_PROTOTYPE, \
string) \ string) \
macro (GLOBAL, \ macro (GLOBAL, \
TYPE_GENERAL, \ TYPE_GENERAL, \
CLASS_OBJECT, \ OBJECT_UL, \
ECMA_BUILTIN_ID__COUNT /* no prototype */, \ ECMA_BUILTIN_ID__COUNT /* no prototype */, \
global) global)

View File

@ -88,7 +88,7 @@ static ecma_object_t*
ecma_builtin_init_object (ecma_builtin_id_t obj_builtin_id, /**< built-in ID */ ecma_builtin_init_object (ecma_builtin_id_t obj_builtin_id, /**< built-in ID */
ecma_object_t* prototype_obj_p, /**< prototype object */ ecma_object_t* prototype_obj_p, /**< prototype object */
ecma_object_type_t obj_type, /**< object's type */ 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_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); 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, \ ecma_object_t *builtin_obj_p = ecma_builtin_init_object (ECMA_BUILTIN_ID_ ## builtin_id, \
prototype_obj_p, \ prototype_obj_p, \
ECMA_OBJECT_ ## object_type, \ ECMA_OBJECT_ ## object_type, \
ECMA_OBJECT_ ## object_class, \ ECMA_MAGIC_STRING_ ## object_class, \
ecma_builtin_ ## lowercase_name ## _property_number); \ ecma_builtin_ ## lowercase_name ## _property_number); \
ecma_builtin_objects [ECMA_BUILTIN_ID_ ## builtin_id] = builtin_obj_p; \ ecma_builtin_objects [ECMA_BUILTIN_ID_ ## builtin_id] = builtin_obj_p; \
} }

View File

@ -336,25 +336,6 @@ typedef enum
ECMA_OBJECT_TYPE_HOST /**< Host object */ ECMA_OBJECT_TYPE_HOST /**< Host object */
} ecma_object_type_t; } 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 * Description of ECMA-object or lexical environment
* (depending on is_lexical_environment). * (depending on is_lexical_environment).
@ -676,6 +657,7 @@ typedef enum
ECMA_MAGIC_STRING_OBJECT_UL, /**< "Object" */ ECMA_MAGIC_STRING_OBJECT_UL, /**< "Object" */
ECMA_MAGIC_STRING_FUNCTION_UL, /**< "Function" */ ECMA_MAGIC_STRING_FUNCTION_UL, /**< "Function" */
ECMA_MAGIC_STRING_ARRAY_UL, /**< "Array" */ ECMA_MAGIC_STRING_ARRAY_UL, /**< "Array" */
ECMA_MAGIC_STRING_ARGUMENTS_UL, /**< "Arguments" */
ECMA_MAGIC_STRING_STRING_UL, /**< "String" */ ECMA_MAGIC_STRING_STRING_UL, /**< "String" */
ECMA_MAGIC_STRING_BOOLEAN_UL, /**< "Boolean" */ ECMA_MAGIC_STRING_BOOLEAN_UL, /**< "Boolean" */
ECMA_MAGIC_STRING_NUMBER_UL, /**< "Number" */ ECMA_MAGIC_STRING_NUMBER_UL, /**< "Number" */

View File

@ -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_OBJECT_UL: return (ecma_char_t*) "Object";
case ECMA_MAGIC_STRING_FUNCTION_UL: return (ecma_char_t*) "Function"; 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_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_STRING_UL: return (ecma_char_t*) "String";
case ECMA_MAGIC_STRING_BOOLEAN_UL: return (ecma_char_t*) "Boolean"; case ECMA_MAGIC_STRING_BOOLEAN_UL: return (ecma_char_t*) "Boolean";
case ECMA_MAGIC_STRING_NUMBER_UL: return (ecma_char_t*) "Number"; case ECMA_MAGIC_STRING_NUMBER_UL: return (ecma_char_t*) "Number";

View File

@ -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_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); 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_string_t *length_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_LENGTH);
ecma_number_t *length_num_p = ecma_alloc_number (); ecma_number_t *length_num_p = ecma_alloc_number ();

View File

@ -155,7 +155,7 @@ ecma_op_create_function_object (ecma_string_t* formal_parameter_list_p[], /**< f
// 3. // 3.
ecma_property_t *class_prop_p = ecma_create_internal_property (f, ECMA_INTERNAL_PROPERTY_CLASS); 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. // 9.
ecma_property_t *scope_prop_p = ecma_create_internal_property (f, ECMA_INTERNAL_PROPERTY_SCOPE); 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. // 3.
ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); 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); ecma_deref_object (prototype_p);

View File

@ -59,7 +59,7 @@ ecma_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function */
// 4. // 4.
ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); 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. // 7.
ecma_property_descriptor_t prop_desc = ecma_make_empty_property_descriptor (); ecma_property_descriptor_t prop_desc = ecma_make_empty_property_descriptor ();

View File

@ -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_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); 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; return obj_p;
} /* ecma_op_create_object_object_noarg */ } /* 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_property_t *class_prop_p = ecma_get_internal_property (obj_p,
ECMA_INTERNAL_PROPERTY_CLASS); 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; hint = ECMA_PREFERRED_TYPE_STRING;
} }

View File

@ -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_deref_object (prototype_obj_p);
ecma_property_t *class_prop_p = ecma_create_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_CLASS); 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_property_t *prim_value_prop_p = ecma_create_internal_property (obj_p,
ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE); ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE);