mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Compacting declaration of dispatch routines for built-in objects.
This commit is contained in:
parent
6b02835547
commit
508573b398
@ -54,103 +54,74 @@ ecma_builtin_bin_search_for_magic_string_id_in_array (const ecma_magic_string_id
|
||||
ecma_length_t array_length,
|
||||
ecma_magic_string_id_t key);
|
||||
|
||||
/* ecma-builtin-global-object.c */
|
||||
extern ecma_length_t
|
||||
ecma_builtin_global_get_routine_parameters_number (ecma_magic_string_id_t routine_id);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_global_dispatch_routine (ecma_magic_string_id_t builtin_routine_id,
|
||||
ecma_value_t this_arg_value,
|
||||
ecma_value_t arguments_list [],
|
||||
ecma_length_t arguments_number);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_global_try_to_instantiate_property (ecma_object_t *obj_p,
|
||||
ecma_string_t *prop_name_p);
|
||||
/**
|
||||
* List of built-in objects in format
|
||||
* 'macro (builtin_id, object_type, object_class, object_prototype_builtin_id, lowercase_name)'
|
||||
*/
|
||||
#define ECMA_BUILTIN_LIST(macro) \
|
||||
macro (STRING_PROTOTYPE, \
|
||||
TYPE_GENERAL, \
|
||||
CLASS_STRING, \
|
||||
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \
|
||||
string_prototype) \
|
||||
macro (OBJECT, \
|
||||
TYPE_FUNCTION, \
|
||||
CLASS_OBJECT, \
|
||||
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \
|
||||
object) \
|
||||
macro (MATH, \
|
||||
TYPE_GENERAL, \
|
||||
CLASS_MATH, \
|
||||
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_OBJECT_PROTOTYPE */, \
|
||||
math) \
|
||||
macro (ARRAY, \
|
||||
TYPE_FUNCTION, \
|
||||
CLASS_ARRAY, \
|
||||
ECMA_BUILTIN_ID__COUNT /* FIXME: ECMA_BUILTIN_ID_ARRAY_PROTOTYPE */, \
|
||||
array) \
|
||||
macro (STRING, \
|
||||
TYPE_FUNCTION, \
|
||||
CLASS_STRING, \
|
||||
ECMA_BUILTIN_ID_STRING_PROTOTYPE, \
|
||||
string) \
|
||||
macro (GLOBAL, \
|
||||
TYPE_GENERAL, \
|
||||
CLASS_OBJECT, \
|
||||
ECMA_BUILTIN_ID__COUNT /* no prototype */, \
|
||||
global)
|
||||
|
||||
extern const ecma_length_t ecma_builtin_global_property_number;
|
||||
#define DECLARE_DISPATCH_ROUTINES(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
extern ecma_completion_value_t \
|
||||
ecma_builtin_ ## lowercase_name ## _dispatch_call (ecma_value_t *arguments_list_p, \
|
||||
ecma_length_t arguments_list_len); \
|
||||
extern ecma_completion_value_t \
|
||||
ecma_builtin_ ## lowercase_name ## _dispatch_construct (ecma_value_t *arguments_list_p, \
|
||||
ecma_length_t arguments_list_len); \
|
||||
extern ecma_length_t \
|
||||
ecma_builtin_ ## lowercase_name ## _get_routine_parameters_number (ecma_magic_string_id_t routine_id); \
|
||||
extern ecma_completion_value_t \
|
||||
ecma_builtin_ ## lowercase_name ## _dispatch_routine (ecma_magic_string_id_t builtin_routine_id, \
|
||||
ecma_value_t this_arg_value, \
|
||||
ecma_value_t arguments_list [], \
|
||||
ecma_length_t arguments_number); \
|
||||
extern ecma_property_t* \
|
||||
ecma_builtin_ ## lowercase_name ## _try_to_instantiate_property (ecma_object_t *obj_p, \
|
||||
ecma_string_t *prop_name_p);
|
||||
#define DECLARE_PROPERTY_NUMBER_VARIABLES(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
extern const ecma_length_t ecma_builtin_ ## lowercase_name ## _property_number;
|
||||
|
||||
/* ecma-builtin-object-object.c */
|
||||
extern ecma_length_t
|
||||
ecma_builtin_object_get_routine_parameters_number (ecma_magic_string_id_t routine_id);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_object_dispatch_routine (ecma_magic_string_id_t builtin_routine_id,
|
||||
ecma_value_t this_arg_value,
|
||||
ecma_value_t arguments_list [],
|
||||
ecma_length_t arguments_number);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_object_try_to_instantiate_property (ecma_object_t *obj_p,
|
||||
ecma_string_t *prop_name_p);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_object_dispatch_call (ecma_value_t *arguments_list_p,
|
||||
ecma_length_t arguments_list_len);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_object_dispatch_construct (ecma_value_t *arguments_list_p,
|
||||
ecma_length_t arguments_list_len);
|
||||
ECMA_BUILTIN_LIST (DECLARE_PROPERTY_NUMBER_VARIABLES)
|
||||
ECMA_BUILTIN_LIST (DECLARE_DISPATCH_ROUTINES)
|
||||
|
||||
extern const ecma_length_t ecma_builtin_object_property_number;
|
||||
#undef DECLARE_PROPERTY_NUMBER_VARIABLES
|
||||
#undef DECLARE_DISPATCH_ROUTINES
|
||||
|
||||
extern void ecma_builtin_init_object_prototype_object (void);
|
||||
extern void ecma_builtin_finalize_object_prototype_object (void);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_object_prototype_try_to_instantiate_property (ecma_object_t *obj_p,
|
||||
ecma_string_t *prop_name_p);
|
||||
|
||||
/* ecma-builtin-math-object.c */
|
||||
extern const ecma_length_t ecma_builtin_math_property_number;
|
||||
extern ecma_length_t
|
||||
ecma_builtin_math_get_routine_parameters_number (ecma_magic_string_id_t routine_id);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_math_dispatch_routine (ecma_magic_string_id_t builtin_routine_id,
|
||||
ecma_value_t this_arg_value,
|
||||
ecma_value_t arguments_list [],
|
||||
ecma_length_t arguments_number);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_math_try_to_instantiate_property (ecma_object_t *obj_p, ecma_string_t *prop_name_p);
|
||||
|
||||
/* ecma-builtin-string-object.c */
|
||||
extern const ecma_length_t ecma_builtin_string_property_number;
|
||||
extern ecma_length_t
|
||||
ecma_builtin_string_get_routine_parameters_number (ecma_magic_string_id_t routine_id);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_string_dispatch_routine (ecma_magic_string_id_t builtin_routine_id,
|
||||
ecma_value_t this_arg_value,
|
||||
ecma_value_t arguments_list [],
|
||||
ecma_length_t arguments_number);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_string_try_to_instantiate_property (ecma_object_t *obj_p, ecma_string_t *prop_name_p);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_string_dispatch_call (ecma_value_t *arguments_list_p,
|
||||
ecma_length_t arguments_list_len);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_string_dispatch_construct (ecma_value_t *arguments_list_p,
|
||||
ecma_length_t arguments_list_len);
|
||||
|
||||
/* ecma-builtin-string-prototype-object.c */
|
||||
extern const ecma_length_t ecma_builtin_string_prototype_property_number;
|
||||
extern ecma_length_t
|
||||
ecma_builtin_string_prototype_get_routine_parameters_number (ecma_magic_string_id_t routine_id);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_string_prototype_dispatch_routine (ecma_magic_string_id_t builtin_routine_id,
|
||||
ecma_value_t this_arg_value,
|
||||
ecma_value_t arguments_list [],
|
||||
ecma_length_t arguments_number);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_string_prototype_try_to_instantiate_property (ecma_object_t *obj_p, ecma_string_t *prop_name_p);
|
||||
|
||||
/* ecma-builtin-array-object.c */
|
||||
extern const ecma_length_t ecma_builtin_array_property_number;
|
||||
extern ecma_length_t
|
||||
ecma_builtin_array_get_routine_parameters_number (ecma_magic_string_id_t routine_id);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_array_dispatch_routine (ecma_magic_string_id_t builtin_routine_id,
|
||||
ecma_value_t this_arg_value,
|
||||
ecma_value_t arguments_list [],
|
||||
ecma_length_t arguments_number);
|
||||
extern ecma_property_t*
|
||||
ecma_builtin_array_try_to_instantiate_property (ecma_object_t *obj_p, ecma_string_t *prop_name_p);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_array_dispatch_call (ecma_value_t *arguments_list_p,
|
||||
ecma_length_t arguments_list_len);
|
||||
extern ecma_completion_value_t
|
||||
ecma_builtin_array_dispatch_construct (ecma_value_t *arguments_list_p,
|
||||
ecma_length_t arguments_list_len);
|
||||
#endif /* !ECMA_BUILTINS_INTERNAL_H */
|
||||
|
||||
@ -135,47 +135,34 @@ ecma_init_builtins (void)
|
||||
ecma_builtin_objects [id] = NULL;
|
||||
}
|
||||
|
||||
ecma_builtin_id_t id = ECMA_BUILTIN_ID_OBJECT;
|
||||
ecma_builtin_objects [id] = ecma_builtin_init_object (id,
|
||||
NULL, /* FIXME */
|
||||
ECMA_OBJECT_TYPE_FUNCTION,
|
||||
ECMA_OBJECT_CLASS_OBJECT,
|
||||
ecma_builtin_object_property_number);
|
||||
#define INIT_BUILTIN(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
{ \
|
||||
ecma_object_t *prototype_obj_p; \
|
||||
if (object_prototype_builtin_id == ECMA_BUILTIN_ID__COUNT) \
|
||||
{ \
|
||||
prototype_obj_p = NULL; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
prototype_obj_p = ecma_builtin_objects [object_prototype_builtin_id]; \
|
||||
JERRY_ASSERT (prototype_obj_p != NULL); \
|
||||
} \
|
||||
\
|
||||
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_builtin_ ## lowercase_name ## _property_number); \
|
||||
ecma_builtin_objects [ECMA_BUILTIN_ID_ ## builtin_id] = builtin_obj_p; \
|
||||
}
|
||||
|
||||
id = ECMA_BUILTIN_ID_STRING_PROTOTYPE;
|
||||
ecma_builtin_objects [id] = ecma_builtin_init_object (id,
|
||||
NULL,
|
||||
ECMA_OBJECT_TYPE_GENERAL,
|
||||
ECMA_OBJECT_CLASS_STRING,
|
||||
ecma_builtin_string_prototype_property_number);
|
||||
ECMA_BUILTIN_LIST (INIT_BUILTIN);
|
||||
|
||||
id = ECMA_BUILTIN_ID_STRING;
|
||||
ecma_builtin_objects [id] = ecma_builtin_init_object (id,
|
||||
ecma_builtin_objects [ECMA_BUILTIN_ID_STRING_PROTOTYPE],
|
||||
ECMA_OBJECT_TYPE_FUNCTION,
|
||||
ECMA_OBJECT_CLASS_STRING,
|
||||
ecma_builtin_string_property_number);
|
||||
|
||||
id = ECMA_BUILTIN_ID_ARRAY;
|
||||
ecma_builtin_objects [id] = ecma_builtin_init_object (id,
|
||||
NULL, /* FIXME */
|
||||
ECMA_OBJECT_TYPE_FUNCTION,
|
||||
ECMA_OBJECT_CLASS_ARRAY,
|
||||
ecma_builtin_array_property_number);
|
||||
|
||||
id = ECMA_BUILTIN_ID_MATH;
|
||||
ecma_builtin_objects [id] = ecma_builtin_init_object (id,
|
||||
NULL, /* FIXME */
|
||||
ECMA_OBJECT_TYPE_GENERAL,
|
||||
ECMA_OBJECT_CLASS_MATH,
|
||||
ecma_builtin_math_property_number);
|
||||
|
||||
id = ECMA_BUILTIN_ID_GLOBAL;
|
||||
ecma_builtin_objects [id] = ecma_builtin_init_object (id,
|
||||
NULL, /* FIXME */
|
||||
ECMA_OBJECT_TYPE_GENERAL,
|
||||
ECMA_OBJECT_CLASS_OBJECT,
|
||||
ecma_builtin_global_property_number);
|
||||
#undef INIT_BUILTIN
|
||||
} /* ecma_init_builtins */
|
||||
|
||||
/**
|
||||
@ -219,64 +206,30 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
|
||||
|
||||
switch (builtin_id)
|
||||
{
|
||||
case ECMA_BUILTIN_ID_GLOBAL:
|
||||
{
|
||||
return ecma_builtin_global_try_to_instantiate_property (object_p, string_p);
|
||||
#define TRY_TO_INSTANTIATE_PROPERTY(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
case ECMA_BUILTIN_ID_ ## builtin_id: \
|
||||
{ \
|
||||
return ecma_builtin_ ## lowercase_name ## _try_to_instantiate_property (object_p, \
|
||||
string_p); \
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_OBJECT:
|
||||
{
|
||||
return ecma_builtin_object_try_to_instantiate_property (object_p, string_p);
|
||||
}
|
||||
ECMA_BUILTIN_LIST (TRY_TO_INSTANTIATE_PROPERTY)
|
||||
|
||||
case ECMA_BUILTIN_ID_MATH:
|
||||
{
|
||||
return ecma_builtin_math_try_to_instantiate_property (object_p, string_p);
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_STRING:
|
||||
{
|
||||
return ecma_builtin_string_try_to_instantiate_property (object_p, string_p);
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_ARRAY:
|
||||
{
|
||||
return ecma_builtin_array_try_to_instantiate_property (object_p, string_p);
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_STRING_PROTOTYPE:
|
||||
{
|
||||
return ecma_builtin_string_prototype_try_to_instantiate_property (object_p, string_p);
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_OBJECT_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_FUNCTION:
|
||||
case ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ARRAY_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_NUMBER:
|
||||
case ECMA_BUILTIN_ID_NUMBER_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_DATE:
|
||||
case ECMA_BUILTIN_ID_REGEXP:
|
||||
case ECMA_BUILTIN_ID_REGEXP_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ERROR:
|
||||
case ECMA_BUILTIN_ID_ERROR_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_EVAL_ERROR:
|
||||
case ECMA_BUILTIN_ID_RANGE_ERROR:
|
||||
case ECMA_BUILTIN_ID_REFERENCE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_ERROR:
|
||||
case ECMA_BUILTIN_ID_TYPE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_URI_ERROR:
|
||||
case ECMA_BUILTIN_ID_JSON:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
#undef TRY_TO_INSTANTIATE_PROPERTY
|
||||
|
||||
case ECMA_BUILTIN_ID__COUNT:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
}
|
||||
|
||||
JERRY_UNREACHABLE ();
|
||||
@ -383,56 +336,37 @@ ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */
|
||||
|
||||
switch (builtin_id)
|
||||
{
|
||||
case ECMA_BUILTIN_ID_OBJECT:
|
||||
{
|
||||
return ecma_builtin_object_dispatch_call (arguments_list_p, arguments_list_len);
|
||||
#define DISPATCH_CALL(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
case ECMA_BUILTIN_ID_ ## builtin_id: \
|
||||
{ \
|
||||
if (ECMA_OBJECT_ ## object_type == ECMA_OBJECT_TYPE_FUNCTION) \
|
||||
{ \
|
||||
return ecma_builtin_ ## lowercase_name ## _dispatch_call (arguments_list_p, \
|
||||
arguments_list_len); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
JERRY_UNREACHABLE (); \
|
||||
} \
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_STRING:
|
||||
{
|
||||
return ecma_builtin_string_dispatch_call (arguments_list_p, arguments_list_len);
|
||||
}
|
||||
ECMA_BUILTIN_LIST (DISPATCH_CALL)
|
||||
|
||||
case ECMA_BUILTIN_ID_ARRAY:
|
||||
{
|
||||
return ecma_builtin_array_dispatch_call (arguments_list_p, arguments_list_len);
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_FUNCTION:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN:
|
||||
case ECMA_BUILTIN_ID_NUMBER:
|
||||
case ECMA_BUILTIN_ID_DATE:
|
||||
case ECMA_BUILTIN_ID_REGEXP:
|
||||
case ECMA_BUILTIN_ID_ERROR:
|
||||
case ECMA_BUILTIN_ID_EVAL_ERROR:
|
||||
case ECMA_BUILTIN_ID_RANGE_ERROR:
|
||||
case ECMA_BUILTIN_ID_REFERENCE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_ERROR:
|
||||
case ECMA_BUILTIN_ID_TYPE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_URI_ERROR:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_GLOBAL:
|
||||
case ECMA_BUILTIN_ID_MATH:
|
||||
case ECMA_BUILTIN_ID_JSON:
|
||||
case ECMA_BUILTIN_ID_OBJECT_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ARRAY_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_STRING_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_NUMBER_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_REGEXP_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ERROR_PROTOTYPE:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
#undef DISPATCH_CALL
|
||||
|
||||
case ECMA_BUILTIN_ID__COUNT:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -462,56 +396,37 @@ ecma_builtin_dispatch_construct (ecma_object_t *obj_p, /**< built-in object */
|
||||
|
||||
switch (builtin_id)
|
||||
{
|
||||
case ECMA_BUILTIN_ID_OBJECT:
|
||||
{
|
||||
return ecma_builtin_object_dispatch_construct (arguments_list_p, arguments_list_len);
|
||||
}
|
||||
#define DISPATCH_CONSTRUCT(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
case ECMA_BUILTIN_ID_ ## builtin_id: \
|
||||
{ \
|
||||
if (ECMA_OBJECT_ ## object_type == ECMA_OBJECT_TYPE_FUNCTION) \
|
||||
{ \
|
||||
return ecma_builtin_ ## lowercase_name ## _dispatch_construct (arguments_list_p, \
|
||||
arguments_list_len); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
JERRY_UNREACHABLE (); \
|
||||
} \
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_STRING:
|
||||
{
|
||||
return ecma_builtin_string_dispatch_construct (arguments_list_p, arguments_list_len);
|
||||
}
|
||||
ECMA_BUILTIN_LIST (DISPATCH_CONSTRUCT)
|
||||
|
||||
case ECMA_BUILTIN_ID_ARRAY:
|
||||
{
|
||||
return ecma_builtin_array_dispatch_construct (arguments_list_p, arguments_list_len);
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_FUNCTION:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN:
|
||||
case ECMA_BUILTIN_ID_NUMBER:
|
||||
case ECMA_BUILTIN_ID_DATE:
|
||||
case ECMA_BUILTIN_ID_REGEXP:
|
||||
case ECMA_BUILTIN_ID_ERROR:
|
||||
case ECMA_BUILTIN_ID_EVAL_ERROR:
|
||||
case ECMA_BUILTIN_ID_RANGE_ERROR:
|
||||
case ECMA_BUILTIN_ID_REFERENCE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_ERROR:
|
||||
case ECMA_BUILTIN_ID_TYPE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_URI_ERROR:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_GLOBAL:
|
||||
case ECMA_BUILTIN_ID_MATH:
|
||||
case ECMA_BUILTIN_ID_JSON:
|
||||
case ECMA_BUILTIN_ID_OBJECT_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ARRAY_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_STRING_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_NUMBER_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_REGEXP_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ERROR_PROTOTYPE:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
#undef DISPATCH_CONSTRUCT
|
||||
|
||||
case ECMA_BUILTIN_ID__COUNT:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
}
|
||||
|
||||
JERRY_UNREACHABLE ();
|
||||
@ -531,59 +446,29 @@ ecma_builtin_get_routine_parameters_number (ecma_builtin_id_t builtin_id, /**< i
|
||||
{
|
||||
switch (builtin_id)
|
||||
{
|
||||
case ECMA_BUILTIN_ID_GLOBAL:
|
||||
{
|
||||
return ecma_builtin_global_get_routine_parameters_number (routine_id);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_OBJECT:
|
||||
{
|
||||
return ecma_builtin_object_get_routine_parameters_number (routine_id);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_STRING:
|
||||
{
|
||||
return ecma_builtin_string_get_routine_parameters_number (routine_id);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_MATH:
|
||||
{
|
||||
return ecma_builtin_math_get_routine_parameters_number (routine_id);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_ARRAY:
|
||||
{
|
||||
return ecma_builtin_array_get_routine_parameters_number (routine_id);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_STRING_PROTOTYPE:
|
||||
{
|
||||
return ecma_builtin_string_prototype_get_routine_parameters_number (routine_id);
|
||||
}
|
||||
#define DISPATCH_GET_ROUTINE_PARAMETERS_NUMBER(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
case ECMA_BUILTIN_ID_ ## builtin_id: \
|
||||
{ \
|
||||
return ecma_builtin_ ## lowercase_name ## _get_routine_parameters_number (routine_id); \
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_OBJECT_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_FUNCTION:
|
||||
case ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ARRAY_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_NUMBER:
|
||||
case ECMA_BUILTIN_ID_NUMBER_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_DATE:
|
||||
case ECMA_BUILTIN_ID_REGEXP:
|
||||
case ECMA_BUILTIN_ID_REGEXP_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ERROR:
|
||||
case ECMA_BUILTIN_ID_ERROR_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_EVAL_ERROR:
|
||||
case ECMA_BUILTIN_ID_RANGE_ERROR:
|
||||
case ECMA_BUILTIN_ID_REFERENCE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_ERROR:
|
||||
case ECMA_BUILTIN_ID_TYPE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_URI_ERROR:
|
||||
case ECMA_BUILTIN_ID_JSON:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED_REF_UNUSED_VARS (routine_id);
|
||||
}
|
||||
ECMA_BUILTIN_LIST (DISPATCH_GET_ROUTINE_PARAMETERS_NUMBER)
|
||||
|
||||
#undef DISPATCH_GET_ROUTINE_PARAMETERS_NUMBER
|
||||
|
||||
case ECMA_BUILTIN_ID__COUNT:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
}
|
||||
|
||||
JERRY_UNREACHABLE ();
|
||||
@ -605,80 +490,32 @@ ecma_builtin_dispatch_routine (ecma_builtin_id_t builtin_object_id, /**< built-i
|
||||
{
|
||||
switch (builtin_object_id)
|
||||
{
|
||||
case ECMA_BUILTIN_ID_GLOBAL:
|
||||
{
|
||||
return ecma_builtin_global_dispatch_routine (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_OBJECT:
|
||||
{
|
||||
return ecma_builtin_object_dispatch_routine (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_STRING:
|
||||
{
|
||||
return ecma_builtin_string_dispatch_routine (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_MATH:
|
||||
{
|
||||
return ecma_builtin_math_dispatch_routine (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_ARRAY:
|
||||
{
|
||||
return ecma_builtin_array_dispatch_routine (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
case ECMA_BUILTIN_ID_STRING_PROTOTYPE:
|
||||
{
|
||||
return ecma_builtin_string_prototype_dispatch_routine (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
#define DISPATCH_ROUTINE(builtin_id, \
|
||||
object_type, \
|
||||
object_class, \
|
||||
object_prototype_builtin_id, \
|
||||
lowercase_name) \
|
||||
case ECMA_BUILTIN_ID_ ## builtin_id: \
|
||||
{ \
|
||||
return ecma_builtin_ ## lowercase_name ## _dispatch_routine (builtin_routine_id, \
|
||||
this_arg_value, \
|
||||
arguments_list, \
|
||||
arguments_number); \
|
||||
}
|
||||
|
||||
case ECMA_BUILTIN_ID_OBJECT_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_FUNCTION:
|
||||
case ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ARRAY_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN:
|
||||
case ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_NUMBER:
|
||||
case ECMA_BUILTIN_ID_NUMBER_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_DATE:
|
||||
case ECMA_BUILTIN_ID_REGEXP:
|
||||
case ECMA_BUILTIN_ID_REGEXP_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_ERROR:
|
||||
case ECMA_BUILTIN_ID_ERROR_PROTOTYPE:
|
||||
case ECMA_BUILTIN_ID_EVAL_ERROR:
|
||||
case ECMA_BUILTIN_ID_RANGE_ERROR:
|
||||
case ECMA_BUILTIN_ID_REFERENCE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_ERROR:
|
||||
case ECMA_BUILTIN_ID_TYPE_ERROR:
|
||||
case ECMA_BUILTIN_ID_SYNTAX_URI_ERROR:
|
||||
case ECMA_BUILTIN_ID_JSON:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED_REF_UNUSED_VARS (builtin_routine_id,
|
||||
this_arg_value,
|
||||
arguments_list,
|
||||
arguments_number);
|
||||
}
|
||||
ECMA_BUILTIN_LIST (DISPATCH_ROUTINE)
|
||||
|
||||
#undef DISPATCH_ROUTINE
|
||||
|
||||
case ECMA_BUILTIN_ID__COUNT:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
JERRY_UNIMPLEMENTED ();
|
||||
}
|
||||
}
|
||||
|
||||
JERRY_UNREACHABLE ();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user