Reduce Date prototype binary size. (#1488)
Before this patch each built-in routine had a separate C function. Although these functions shared a lot of common operations compilers cannot eliminate these code duplications in the final binary code. This patch introduces a single C function which handles all date prototype routines. Each shared code block has only one binary represenation. JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
committed by
Tilmann Scheller
parent
58bcf12665
commit
7423226acc
File diff suppressed because it is too large
Load Diff
@@ -36,55 +36,55 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR,
|
|||||||
ECMA_BUILTIN_ID_DATE,
|
ECMA_BUILTIN_ID_DATE,
|
||||||
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
|
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
|
||||||
|
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ecma_builtin_date_prototype_to_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ECMA_DATE_PROTOTYPE_TO_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_DATE_STRING_UL, ecma_builtin_date_prototype_to_date_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_DATE_STRING_UL, ECMA_DATE_PROTOTYPE_TO_DATE_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_TIME_STRING_UL, ecma_builtin_date_prototype_to_time_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_TIME_STRING_UL, ECMA_DATE_PROTOTYPE_TO_TIME_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_STRING_UL, ecma_builtin_date_prototype_to_locale_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_STRING_UL, ECMA_DATE_PROTOTYPE_TO_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_DATE_STRING_UL, ecma_builtin_date_prototype_to_locale_date_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_DATE_STRING_UL, ECMA_DATE_PROTOTYPE_TO_DATE_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_TIME_STRING_UL, ecma_builtin_date_prototype_to_locale_time_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_LOCALE_TIME_STRING_UL, ECMA_DATE_PROTOTYPE_TO_TIME_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_VALUE_OF_UL, ecma_builtin_date_prototype_value_of, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_VALUE_OF_UL, ECMA_DATE_PROTOTYPE_GET_TIME, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_TIME_UL, ecma_builtin_date_prototype_get_time, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_TIME_UL, ECMA_DATE_PROTOTYPE_GET_TIME, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_FULL_YEAR_UL, ecma_builtin_date_prototype_get_full_year, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_FULL_YEAR_UL, ECMA_DATE_PROTOTYPE_GET_FULL_YEAR, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_FULL_YEAR_UL, ecma_builtin_date_prototype_get_utc_full_year, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_FULL_YEAR_UL, ECMA_DATE_PROTOTYPE_GET_UTC_FULL_YEAR, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_MONTH_UL, ecma_builtin_date_prototype_get_month, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_MONTH_UL, ECMA_DATE_PROTOTYPE_GET_MONTH, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_MONTH_UL, ecma_builtin_date_prototype_get_utc_month, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_MONTH_UL, ECMA_DATE_PROTOTYPE_GET_UTC_MONTH, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_DATE_UL, ecma_builtin_date_prototype_get_date, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_DATE_UL, ECMA_DATE_PROTOTYPE_GET_DATE, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_DATE_UL, ecma_builtin_date_prototype_get_utc_date, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_DATE_UL, ECMA_DATE_PROTOTYPE_GET_UTC_DATE, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_DAY_UL, ecma_builtin_date_prototype_get_day, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_DAY_UL, ECMA_DATE_PROTOTYPE_GET_DAY, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_DAY_UL, ecma_builtin_date_prototype_get_utc_day, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_DAY_UL, ECMA_DATE_PROTOTYPE_GET_UTC_DAY, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_HOURS_UL, ecma_builtin_date_prototype_get_hours, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_HOURS_UL, ECMA_DATE_PROTOTYPE_GET_HOURS, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_HOURS_UL, ecma_builtin_date_prototype_get_utc_hours, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_HOURS_UL, ECMA_DATE_PROTOTYPE_GET_UTC_HOURS, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_MINUTES_UL, ecma_builtin_date_prototype_get_minutes, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_MINUTES_UL, ECMA_DATE_PROTOTYPE_GET_MINUTES, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_MINUTES_UL, ecma_builtin_date_prototype_get_utc_minutes, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_MINUTES_UL, ECMA_DATE_PROTOTYPE_GET_UTC_MINUTES, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_SECONDS_UL, ecma_builtin_date_prototype_get_seconds, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_SECONDS_UL, ECMA_DATE_PROTOTYPE_GET_SECONDS, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_SECONDS_UL, ecma_builtin_date_prototype_get_utc_seconds, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_SECONDS_UL, ECMA_DATE_PROTOTYPE_GET_UTC_SECONDS, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_MILLISECONDS_UL, ecma_builtin_date_prototype_get_milliseconds, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_MILLISECONDS_UL, ECMA_DATE_PROTOTYPE_GET_MILLISECONDS, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_UTC_MILLISECONDS_UL, ecma_builtin_date_prototype_get_utc_milliseconds, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_UTC_MILLISECONDS_UL, ECMA_DATE_PROTOTYPE_GET_UTC_MILLISECONDS, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_TIMEZONE_OFFSET_UL, ecma_builtin_date_prototype_get_timezone_offset, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_TIMEZONE_OFFSET_UL, ECMA_DATE_PROTOTYPE_GET_UTC_TIMEZONE_OFFSET, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_TIME_UL, ecma_builtin_date_prototype_set_time, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_SET_TIME_UL, ECMA_DATE_PROTOTYPE_SET_TIME, 1, 1)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_MILLISECONDS_UL, ecma_builtin_date_prototype_set_milliseconds, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_SET_MILLISECONDS_UL, ECMA_DATE_PROTOTYPE_SET_MILLISECONDS, 1, 1)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_MILLISECONDS_UL, ecma_builtin_date_prototype_set_utc_milliseconds, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_MILLISECONDS_UL, ECMA_DATE_PROTOTYPE_SET_UTC_MILLISECONDS, 1, 1)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_SECONDS_UL, ecma_builtin_date_prototype_set_seconds, 2, 2)
|
ROUTINE (LIT_MAGIC_STRING_SET_SECONDS_UL, ECMA_DATE_PROTOTYPE_SET_SECONDS, 2, 2)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_SECONDS_UL, ecma_builtin_date_prototype_set_utc_seconds, 2, 2)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_SECONDS_UL, ECMA_DATE_PROTOTYPE_SET_UTC_SECONDS, 2, 2)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_MINUTES_UL, ecma_builtin_date_prototype_set_minutes, NON_FIXED, 3)
|
ROUTINE (LIT_MAGIC_STRING_SET_MINUTES_UL, ECMA_DATE_PROTOTYPE_SET_MINUTES, NON_FIXED, 3)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_MINUTES_UL, ecma_builtin_date_prototype_set_utc_minutes, NON_FIXED, 3)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_MINUTES_UL, ECMA_DATE_PROTOTYPE_SET_UTC_MINUTES, NON_FIXED, 3)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_HOURS_UL, ecma_builtin_date_prototype_set_hours, NON_FIXED, 4)
|
ROUTINE (LIT_MAGIC_STRING_SET_HOURS_UL, ECMA_DATE_PROTOTYPE_SET_HOURS, NON_FIXED, 4)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_HOURS_UL, ecma_builtin_date_prototype_set_utc_hours, NON_FIXED, 4)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_HOURS_UL, ECMA_DATE_PROTOTYPE_SET_UTC_HOURS, NON_FIXED, 4)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_DATE_UL, ecma_builtin_date_prototype_set_date, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_SET_DATE_UL, ECMA_DATE_PROTOTYPE_SET_DATE, 1, 1)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_DATE_UL, ecma_builtin_date_prototype_set_utc_date, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_DATE_UL, ECMA_DATE_PROTOTYPE_SET_UTC_DATE, 1, 1)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_MONTH_UL, ecma_builtin_date_prototype_set_month, 2, 2)
|
ROUTINE (LIT_MAGIC_STRING_SET_MONTH_UL, ECMA_DATE_PROTOTYPE_SET_MONTH, 2, 2)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_MONTH_UL, ecma_builtin_date_prototype_set_utc_month, 2, 2)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_MONTH_UL, ECMA_DATE_PROTOTYPE_SET_UTC_MONTH, 2, 2)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_FULL_YEAR_UL, ecma_builtin_date_prototype_set_full_year, NON_FIXED, 3)
|
ROUTINE (LIT_MAGIC_STRING_SET_FULL_YEAR_UL, ECMA_DATE_PROTOTYPE_SET_FULL_YEAR, NON_FIXED, 3)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_UTC_FULL_YEAR_UL, ecma_builtin_date_prototype_set_utc_full_year, NON_FIXED, 3)
|
ROUTINE (LIT_MAGIC_STRING_SET_UTC_FULL_YEAR_UL, ECMA_DATE_PROTOTYPE_SET_UTC_FULL_YEAR, NON_FIXED, 3)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_UTC_STRING_UL, ecma_builtin_date_prototype_to_utc_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_UTC_STRING_UL, ECMA_DATE_PROTOTYPE_TO_UTC_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_ISO_STRING_UL, ecma_builtin_date_prototype_to_iso_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_ISO_STRING_UL, ECMA_DATE_PROTOTYPE_TO_ISO_STRING, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_JSON_UL, ecma_builtin_date_prototype_to_json, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_TO_JSON_UL, ECMA_DATE_PROTOTYPE_TO_JSON, 1, 1)
|
||||||
|
|
||||||
#ifndef CONFIG_DISABLE_ANNEXB_BUILTIN
|
#ifndef CONFIG_DISABLE_ANNEXB_BUILTIN
|
||||||
|
|
||||||
ROUTINE (LIT_MAGIC_STRING_GET_YEAR_UL, ecma_builtin_date_prototype_get_year, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_GET_YEAR_UL, ECMA_DATE_PROTOTYPE_GET_YEAR, 0, 0)
|
||||||
ROUTINE (LIT_MAGIC_STRING_SET_YEAR_UL, ecma_builtin_date_prototype_set_year, 1, 1)
|
ROUTINE (LIT_MAGIC_STRING_SET_YEAR_UL, ECMA_DATE_PROTOTYPE_SET_YEAR, 1, 1)
|
||||||
ROUTINE (LIT_MAGIC_STRING_TO_GMT_STRING_UL, ecma_builtin_date_prototype_to_utc_string, 0, 0)
|
ROUTINE (LIT_MAGIC_STRING_TO_GMT_STRING_UL, ECMA_DATE_PROTOTYPE_TO_UTC_STRING, 0, 0)
|
||||||
|
|
||||||
#endif /* !CONFIG_DISABLE_ANNEXB_BUILTIN */
|
#endif /* !CONFIG_DISABLE_ANNEXB_BUILTIN */
|
||||||
|
|
||||||
|
|||||||
@@ -807,7 +807,7 @@ ecma_date_make_date (ecma_number_t day, /**< day value */
|
|||||||
*
|
*
|
||||||
* Used by:
|
* Used by:
|
||||||
* - The Date.prototype.setTime routine.
|
* - The Date.prototype.setTime routine.
|
||||||
* - The ecma_date_set_internal_property helper function.
|
* - The ecma_builtin_date_prototype_dispatch_set helper function.
|
||||||
*
|
*
|
||||||
* @return number of milliseconds
|
* @return number of milliseconds
|
||||||
*/
|
*/
|
||||||
@@ -846,39 +846,6 @@ ecma_date_timezone_offset (ecma_number_t time) /**< time value */
|
|||||||
return (time - ecma_date_local_time (time)) / ECMA_DATE_MS_PER_MINUTE;
|
return (time - ecma_date_local_time (time)) / ECMA_DATE_MS_PER_MINUTE;
|
||||||
} /* ecma_date_timezone_offset */
|
} /* ecma_date_timezone_offset */
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper function to set Date internal property.
|
|
||||||
*
|
|
||||||
* Used by:
|
|
||||||
* - All Date.prototype.set *routine except Date.prototype.setTime.
|
|
||||||
*
|
|
||||||
* @return ecma value containing the new internal time value
|
|
||||||
* Returned value must be freed with ecma_free_value.
|
|
||||||
*/
|
|
||||||
ecma_value_t
|
|
||||||
ecma_date_set_internal_property (ecma_value_t this_arg, /**< this argument */
|
|
||||||
ecma_number_t day, /**< day */
|
|
||||||
ecma_number_t time, /**< time */
|
|
||||||
ecma_date_timezone_t is_utc) /**< input is utc */
|
|
||||||
{
|
|
||||||
JERRY_ASSERT (ecma_is_value_object (this_arg));
|
|
||||||
|
|
||||||
ecma_number_t date = ecma_date_make_date (day, time);
|
|
||||||
if (is_utc != ECMA_DATE_UTC)
|
|
||||||
{
|
|
||||||
date = ecma_date_utc (date);
|
|
||||||
}
|
|
||||||
|
|
||||||
ecma_number_t value = ecma_date_time_clip (date);
|
|
||||||
|
|
||||||
ecma_object_t *object_p = ecma_get_object_from_value (this_arg);
|
|
||||||
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) object_p;
|
|
||||||
|
|
||||||
*ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t, ext_object_p->u.class_prop.u.value) = value;
|
|
||||||
|
|
||||||
return ecma_make_number_value (value);
|
|
||||||
} /* ecma_date_set_internal_property */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common function to copy utf8 characters.
|
* Common function to copy utf8 characters.
|
||||||
*
|
*
|
||||||
@@ -1247,41 +1214,6 @@ ecma_date_value_to_time_string (ecma_number_t datetime_number) /**<datetime */
|
|||||||
return ecma_make_string_value (time_string_p);
|
return ecma_make_string_value (time_string_p);
|
||||||
} /* ecma_date_value_to_time_string */
|
} /* ecma_date_value_to_time_string */
|
||||||
|
|
||||||
/**
|
|
||||||
* Common function to get the primitive value of the Date object.
|
|
||||||
*
|
|
||||||
* Used by:
|
|
||||||
* - The Date.prototype.toString routine.
|
|
||||||
* - The Date.prototype.toISOString routine.
|
|
||||||
* - The Date.prototype.toUTCString routine.
|
|
||||||
*
|
|
||||||
* @return ecma value
|
|
||||||
* Returned value must be freed with ecma_free_value.
|
|
||||||
*/
|
|
||||||
ecma_value_t
|
|
||||||
ecma_date_get_primitive_value (ecma_value_t this_arg) /**< this argument */
|
|
||||||
{
|
|
||||||
ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
|
|
||||||
|
|
||||||
if (!ecma_is_value_object (this_arg)
|
|
||||||
|| !ecma_object_class_is (ecma_get_object_from_value (this_arg), LIT_MAGIC_STRING_DATE_UL))
|
|
||||||
{
|
|
||||||
ret_value = ecma_raise_type_error (ECMA_ERR_MSG ("Incompatible type"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecma_object_t *object_p = ecma_get_object_from_value (this_arg);
|
|
||||||
ecma_extended_object_t *ext_object_p = (ecma_extended_object_t *) object_p;
|
|
||||||
|
|
||||||
ecma_number_t date_num = *ECMA_GET_INTERNAL_VALUE_POINTER (ecma_number_t,
|
|
||||||
ext_object_p->u.class_prop.u.value);
|
|
||||||
|
|
||||||
ret_value = ecma_make_number_value (date_num);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret_value;
|
|
||||||
} /* ecma_date_get_primitive_value */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
* @}
|
* @}
|
||||||
|
|||||||
@@ -117,15 +117,12 @@ extern ecma_number_t ecma_date_make_day (ecma_number_t, ecma_number_t, ecma_numb
|
|||||||
extern ecma_number_t ecma_date_make_date (ecma_number_t, ecma_number_t);
|
extern ecma_number_t ecma_date_make_date (ecma_number_t, ecma_number_t);
|
||||||
extern ecma_number_t ecma_date_time_clip (ecma_number_t);
|
extern ecma_number_t ecma_date_time_clip (ecma_number_t);
|
||||||
extern ecma_number_t ecma_date_timezone_offset (ecma_number_t);
|
extern ecma_number_t ecma_date_timezone_offset (ecma_number_t);
|
||||||
extern ecma_value_t ecma_date_set_internal_property (ecma_value_t, ecma_number_t,
|
|
||||||
ecma_number_t, ecma_date_timezone_t);
|
|
||||||
|
|
||||||
extern ecma_value_t ecma_date_value_to_string (ecma_number_t);
|
extern ecma_value_t ecma_date_value_to_string (ecma_number_t);
|
||||||
extern ecma_value_t ecma_date_value_to_utc_string (ecma_number_t);
|
extern ecma_value_t ecma_date_value_to_utc_string (ecma_number_t);
|
||||||
extern ecma_value_t ecma_date_value_to_iso_string (ecma_number_t);
|
extern ecma_value_t ecma_date_value_to_iso_string (ecma_number_t);
|
||||||
extern ecma_value_t ecma_date_value_to_date_string (ecma_number_t);
|
extern ecma_value_t ecma_date_value_to_date_string (ecma_number_t);
|
||||||
extern ecma_value_t ecma_date_value_to_time_string (ecma_number_t);
|
extern ecma_value_t ecma_date_value_to_time_string (ecma_number_t);
|
||||||
extern ecma_value_t ecma_date_get_primitive_value (ecma_value_t);
|
|
||||||
|
|
||||||
#endif /* !CONFIG_DISABLE_DATE_BUILTIN */
|
#endif /* !CONFIG_DISABLE_DATE_BUILTIN */
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
#define DISPATCH_ROUTINE_ROUTINE_NAME \
|
#define DISPATCH_ROUTINE_ROUTINE_NAME \
|
||||||
PASTE (PASTE (ecma_builtin_, BUILTIN_UNDERSCORED_ID), _dispatch_routine)
|
PASTE (PASTE (ecma_builtin_, BUILTIN_UNDERSCORED_ID), _dispatch_routine)
|
||||||
|
|
||||||
|
#ifndef BUILTIN_CUSTOM_DISPATCH
|
||||||
|
|
||||||
#define ROUTINE_ARG(n) , ecma_value_t arg ## n
|
#define ROUTINE_ARG(n) , ecma_value_t arg ## n
|
||||||
#define ROUTINE_ARG_LIST_0 ecma_value_t this_arg
|
#define ROUTINE_ARG_LIST_0 ecma_value_t this_arg
|
||||||
#define ROUTINE_ARG_LIST_1 ROUTINE_ARG_LIST_0 ROUTINE_ARG(1)
|
#define ROUTINE_ARG_LIST_1 ROUTINE_ARG_LIST_0 ROUTINE_ARG(1)
|
||||||
@@ -70,11 +72,14 @@ enum
|
|||||||
#include BUILTIN_INC_HEADER_NAME
|
#include BUILTIN_INC_HEADER_NAME
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif /* !BUILTIN_CUSTOM_DISPATCH */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Built-in property list of the built-in object.
|
* Built-in property list of the built-in object.
|
||||||
*/
|
*/
|
||||||
const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] =
|
const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] =
|
||||||
{
|
{
|
||||||
|
#ifndef BUILTIN_CUSTOM_DISPATCH
|
||||||
#define ROUTINE(name, c_function_name, args_number, length_prop_value) \
|
#define ROUTINE(name, c_function_name, args_number, length_prop_value) \
|
||||||
{ \
|
{ \
|
||||||
name, \
|
name, \
|
||||||
@@ -82,6 +87,15 @@ const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] =
|
|||||||
ECMA_PROPERTY_CONFIGURABLE_WRITABLE, \
|
ECMA_PROPERTY_CONFIGURABLE_WRITABLE, \
|
||||||
ECMA_ROUTINE_VALUE (ECMA_ROUTINE_ ## name ## c_function_name, length_prop_value) \
|
ECMA_ROUTINE_VALUE (ECMA_ROUTINE_ ## name ## c_function_name, length_prop_value) \
|
||||||
},
|
},
|
||||||
|
#else /* BUILTIN_CUSTOM_DISPATCH */
|
||||||
|
#define ROUTINE(name, c_function_name, args_number, length_prop_value) \
|
||||||
|
{ \
|
||||||
|
name, \
|
||||||
|
ECMA_BUILTIN_PROPERTY_ROUTINE, \
|
||||||
|
ECMA_PROPERTY_CONFIGURABLE_WRITABLE, \
|
||||||
|
ECMA_ROUTINE_VALUE (c_function_name, length_prop_value) \
|
||||||
|
},
|
||||||
|
#endif /* !BUILTIN_CUSTOM_DISPATCH */
|
||||||
#define OBJECT_VALUE(name, obj_builtin_id, prop_attributes) \
|
#define OBJECT_VALUE(name, obj_builtin_id, prop_attributes) \
|
||||||
{ \
|
{ \
|
||||||
name, \
|
name, \
|
||||||
@@ -133,6 +147,8 @@ const ecma_builtin_property_descriptor_t PROPERTY_DESCRIPTOR_LIST_NAME[] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef BUILTIN_CUSTOM_DISPATCH
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dispatcher of the built-in's routines
|
* Dispatcher of the built-in's routines
|
||||||
*
|
*
|
||||||
@@ -197,11 +213,14 @@ DISPATCH_ROUTINE_ROUTINE_NAME (uint16_t builtin_routine_id, /**< built-in wide r
|
|||||||
}
|
}
|
||||||
} /* DISPATCH_ROUTINE_ROUTINE_NAME */
|
} /* DISPATCH_ROUTINE_ROUTINE_NAME */
|
||||||
|
|
||||||
|
#endif /* !BUILTIN_CUSTOM_DISPATCH */
|
||||||
|
|
||||||
|
#undef BUILTIN_INC_HEADER_NAME
|
||||||
|
#undef BUILTIN_CUSTOM_DISPATCH
|
||||||
|
#undef BUILTIN_UNDERSCORED_ID
|
||||||
|
#undef DISPATCH_ROUTINE_ROUTINE_NAME
|
||||||
|
#undef ECMA_BUILTIN_PROPERTY_NAME_INDEX
|
||||||
#undef PASTE__
|
#undef PASTE__
|
||||||
#undef PASTE_
|
#undef PASTE_
|
||||||
#undef PASTE
|
#undef PASTE
|
||||||
#undef PROPERTY_DESCRIPTOR_LIST_NAME
|
#undef PROPERTY_DESCRIPTOR_LIST_NAME
|
||||||
#undef DISPATCH_ROUTINE_ROUTINE_NAME
|
|
||||||
#undef BUILTIN_UNDERSCORED_ID
|
|
||||||
#undef BUILTIN_INC_HEADER_NAME
|
|
||||||
#undef ECMA_BUILTIN_PROPERTY_NAME_INDEX
|
|
||||||
|
|||||||
Reference in New Issue
Block a user