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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user