diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-date.c b/jerry-core/ecma/builtin-objects/ecma-builtin-date.c index fcd943cbe8..f9076c0f1e 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-date.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-date.c @@ -33,10 +33,6 @@ #define BUILTIN_UNDERSCORED_ID date #include "ecma-builtin-internal-routines-template.inc.h" -#ifdef JERRY_ENABLE_DATE_SYS_CALLS -#include -#endif /* JERRY_ENABLE_DATE_SYS_CALLS */ - /** \addtogroup ecma ECMA * @{ * @@ -456,17 +452,11 @@ ecma_builtin_date_now (ecma_value_t this_arg __attr_unused___) /**< this argumen ecma_number_t *now_num_p = ecma_alloc_number (); *now_num_p = ECMA_NUMBER_ZERO; -#ifdef JERRY_ENABLE_DATE_SYS_CALLS - struct timeval tv; - - if (gettimeofday (&tv, NULL) != 0) + if (jerry_port_get_time (now_num_p) != 0) { - return ecma_raise_type_error (ECMA_ERR_MSG ("gettimeofday failed")); + return ecma_raise_type_error (ECMA_ERR_MSG ("Get time failed")); } - *now_num_p = ((ecma_number_t) tv.tv_sec) * 1000.0 + ((ecma_number_t) (tv.tv_usec / 1000)); -#endif /* JERRY_ENABLE_DATE_SYS_CALLS */ - return ecma_make_number_value (now_num_p); } /* ecma_builtin_date_now */ diff --git a/jerry-core/jerry-port.c b/jerry-core/jerry-port.c index 3a8cb8b3d1..c943e10fa6 100644 --- a/jerry-core/jerry-port.c +++ b/jerry-core/jerry-port.c @@ -15,6 +15,9 @@ #include "jerry-port.h" #include +#ifdef JERRY_ENABLE_DATE_SYS_CALLS +#include +#endif /* JERRY_ENABLE_DATE_SYS_CALLS */ /** * Provide log message to filestream implementation for the engine. @@ -52,3 +55,27 @@ int jerry_port_putchar (int c) /**< character to put */ { return putchar ((unsigned char) c); } /* jerry_port_putchar */ + +/** + * Provide datetime implementation for the engine + */ +int jerry_port_get_time (double *out_time) +{ + (void) out_time; + +#ifdef JERRY_ENABLE_DATE_SYS_CALLS + struct timeval tv; + + if (gettimeofday (&tv, NULL) != 0) + { + return -1; + } + else + { + *out_time = ((double) tv.tv_sec) * 1000.0 + ((double) (tv.tv_usec / 1000.0)); + return 0; + } +#endif /* JERRY_ENABLE_DATE_SYS_CALLS */ + + return 0; +} /* jerry_port_get_time */ diff --git a/jerry-core/jerry-port.h b/jerry-core/jerry-port.h index 5de51909b3..d52d49a7e1 100644 --- a/jerry-core/jerry-port.h +++ b/jerry-core/jerry-port.h @@ -35,6 +35,11 @@ int jerry_port_logmsg (FILE *stream, const char *format, ...); int jerry_port_errormsg (const char *format, ...); int jerry_port_putchar (int c); +/** + * Target port functions for date and time + */ +int jerry_port_get_time (double *out_time); + /** * @} */