Implement builtin getters for Date object

JerryScript-DCO-1.0-Signed-off-by: Szilard Ledan szledan.u-szeged@partner.samsung.com
This commit is contained in:
Szilard Ledan
2015-06-24 11:06:08 +02:00
parent 6547cf3b2d
commit 8d7cdebee0
5 changed files with 272 additions and 278 deletions
@@ -28,31 +28,6 @@
* @{
*/
/**
* Time range defines for helper functions.
*
* See also:
* ECMA-262 v5, 15.9.1.1, 15.9.1.10
*/
/* Hours in a day. */
#define ECMA_DATE_HOURS_PER_DAY 24
/* Minutes in an hour. */
#define ECMA_DATE_MINUTES_PER_HOUR 60
/* Seconds in a minute. */
#define ECMA_DATE_SECONDS_PER_MINUTE 60
/* Milliseconds in a second. */
#define ECMA_DATE_MS_PER_SECOND 1000
/* ECMA_DATE_MS_PER_MINUTE == 60000 */
#define ECMA_DATE_MS_PER_MINUTE (ECMA_DATE_MS_PER_SECOND * ECMA_DATE_SECONDS_PER_MINUTE)
/* ECMA_DATE_MS_PER_HOUR == 3600000 */
#define ECMA_DATE_MS_PER_HOUR (ECMA_DATE_MS_PER_MINUTE * ECMA_DATE_MINUTES_PER_HOUR)
/* ECMA_DATE_MS_PER_DAY == 86400000 */
#define ECMA_DATE_MS_PER_DAY (ECMA_DATE_MS_PER_HOUR * ECMA_DATE_HOURS_PER_DAY)
/* This gives a range of 8,640,000,000,000,000 milliseconds
* to either side of 01 January, 1970 UTC.
*/
#define ECMA_DATE_MAX_VALUE 8.64e15
/**
* Helper function to get day number from time value.
*
@@ -172,6 +147,10 @@ ecma_date_time_from_year (ecma_number_t year) /**< year value */
* See also:
* ECMA-262 v5, 15.9.1.3
*
* Used by:
* - The Date.prototype.getFullYear routine. (Generated.)
* - The Date.prototype.getUTCFullYear routine. (Generated.)
*
* @return year value
*/
ecma_number_t
@@ -243,6 +222,10 @@ ecma_date_day_within_year (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.4
*
* Used by:
* - The Date.prototype.getMonth routine. (Generated.)
* - The Date.prototype.getUTCMonth routine. (Generated.)
*
* @return month number
*/
ecma_number_t
@@ -312,6 +295,10 @@ ecma_date_month_from_time (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.5
*
* Used by:
* - The Date.prototype.getDate routine. (Generated.)
* - The Date.prototype.getUTCDate routine. (Generated.)
*
* @return date number
*/
ecma_number_t
@@ -389,6 +376,10 @@ ecma_date_date_from_time (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.6
*
* Used by:
* - The Date.prototype.getDay routine. (Generated.)
* - The Date.prototype.getUTCDay routine. (Generated.)
*
* @return weekday number
*/
ecma_number_t __attr_always_inline___
@@ -451,6 +442,10 @@ ecma_date_daylight_saving_ta (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.9
*
* Used by:
* - All Date.prototype.getUTC* routines. (Generated.)
* - The Date.prototype.getTimezoneOffset routine.
*
* @return local time
*/
ecma_number_t __attr_always_inline___
@@ -490,6 +485,10 @@ ecma_date_utc (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.10
*
* Used by:
* - The Date.prototype.getHour routine. (Generated.)
* - The Date.prototype.getUTCHour routine. (Generated.)
*
* @return hour value
*/
ecma_number_t __attr_always_inline___
@@ -510,6 +509,10 @@ ecma_date_hour_from_time (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.10
*
* Used by:
* - The Date.prototype.getMinutes routine. (Generated.)
* - The Date.prototype.getUTCMinutes routine. (Generated.)
*
* @return minute value
*/
ecma_number_t __attr_always_inline___
@@ -530,6 +533,10 @@ ecma_date_min_from_time (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.10
*
* Used by:
* - The Date.prototype.getSeconds routine. (Generated.)
* - The Date.prototype.getUTCSeconds routine. (Generated.)
*
* @return second value
*/
ecma_number_t __attr_always_inline___
@@ -550,6 +557,10 @@ ecma_date_sec_from_time (ecma_number_t time) /**< time value */
* See also:
* ECMA-262 v5, 15.9.1.10
*
* Used by:
* - The Date.prototype.getMilliseconds routine. (Generated.)
* - The Date.prototype.getUTCMilliseconds routine. (Generated.)
*
* @return millisecond value
*/
ecma_number_t __attr_always_inline___
@@ -688,6 +699,28 @@ ecma_date_time_clip (ecma_number_t time) /**< time value */
return ecma_number_trunc (time);
} /* ecma_date_time_clip */
/**
* Helper function to calculate timezone offset.
*
* See also:
* ECMA-262 v5, 15.9.5.26
*
* Used by:
* - The Date.prototype.getTimezoneOffset routine. (Generated.)
*
* @return timezone offset
*/
ecma_number_t __attr_always_inline___
ecma_date_timezone_offset (ecma_number_t time) /**< time value */
{
if (ecma_number_is_nan (time))
{
return ecma_number_make_nan ();
}
return (time - ecma_date_local_time (time)) / ECMA_DATE_MS_PER_MINUTE;
} /* ecma_date_timezone_offset */
/**
* @}
* @}