Improve date helpers. (#1499)

Rework date to string conversion, and remove nan checks from inline
functions. Furtermore some inline functions are changed to normal
functions.

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2017-01-11 08:27:29 +01:00
committed by GitHub
parent 00b220bde6
commit 7d83293762
4 changed files with 323 additions and 722 deletions
@@ -374,10 +374,16 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
if (builtin_routine_id <= ECMA_DATE_PROTOTYPE_SET_UTC_DATE)
{
if (ECMA_DATE_PROTOTYPE_IS_SET_YEAR_ROUTINE (builtin_routine_id)
&& ecma_number_is_nan (date_num))
if (ecma_number_is_nan (date_num))
{
date_num = ECMA_NUMBER_ZERO;
if (ECMA_DATE_PROTOTYPE_IS_SET_YEAR_ROUTINE (builtin_routine_id))
{
date_num = ECMA_NUMBER_ZERO;
}
else
{
return ecma_make_number_value (date_num);
}
}
time_part = ecma_date_time_within_day (date_num);
@@ -449,6 +455,11 @@ ecma_builtin_date_prototype_dispatch_set (uint16_t builtin_routine_id, /**< buil
}
else
{
if (ecma_number_is_nan (date_num))
{
return ecma_make_number_value (date_num);
}
day_part = ecma_date_day (date_num);
ecma_number_t hour = ecma_date_hour_from_time (date_num);
@@ -589,7 +600,7 @@ ecma_builtin_date_prototype_dispatch_routine (uint16_t builtin_routine_id, /**<
if (!BUILTIN_DATE_FUNCTION_IS_UTC (builtin_routine_id))
{
this_num = ecma_date_local_time (this_num);
this_num += ecma_date_local_time_zone (this_num);
}
if (builtin_routine_id <= ECMA_DATE_PROTOTYPE_GET_UTC_TIMEZONE_OFFSET)
File diff suppressed because it is too large Load Diff
@@ -96,18 +96,11 @@ typedef enum
/* ecma-builtin-helpers-date.c */
ecma_number_t ecma_date_day (ecma_number_t time);
ecma_number_t ecma_date_time_within_day (ecma_number_t time);
ecma_number_t ecma_date_days_in_year (ecma_number_t year);
ecma_number_t ecma_date_day_from_year (ecma_number_t year);
ecma_number_t ecma_date_time_from_year (ecma_number_t year);
ecma_number_t ecma_date_year_from_time (ecma_number_t time);
ecma_number_t ecma_date_in_leap_year (ecma_number_t time);
ecma_number_t ecma_date_day_within_year (ecma_number_t time);
ecma_number_t ecma_date_month_from_time (ecma_number_t time);
ecma_number_t ecma_date_date_from_time (ecma_number_t time);
ecma_number_t ecma_date_week_day (ecma_number_t time);
ecma_number_t ecma_date_local_tza ();
ecma_number_t ecma_date_daylight_saving_ta (ecma_number_t time);
ecma_number_t ecma_date_local_time (ecma_number_t time);
ecma_number_t ecma_date_local_time_zone (ecma_number_t time);
ecma_number_t ecma_date_utc (ecma_number_t time);
ecma_number_t ecma_date_hour_from_time (ecma_number_t time);
ecma_number_t ecma_date_min_from_time (ecma_number_t time);