Improve date internals (#4593)
- Optimize year from time calculation - Force arithmetic operations to int32_t/int64_t whenever possible - Optimize number conversion in date parse - Cache local TZA of the date object - Fix a bug in Date.parse timezone parsing JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik robert.fancsik@h-lab.eu
This commit is contained in:
@@ -61,6 +61,7 @@ var wrongFormats = ["",
|
||||
"+0002015-01-01",
|
||||
"-0002015-01-01",
|
||||
"2015-01T00:00:00.000-03X00",
|
||||
"2015-01T00:00:00.000-02-02",
|
||||
"2015-01-01T00-03:00",
|
||||
"Fri Jan 01 1 00:00:00 GMT+0000",
|
||||
"Fri Jan 01 11 00:00:00 GMT+0000",
|
||||
|
||||
@@ -33,18 +33,6 @@
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
/* int ecma_date_day (time)*/
|
||||
|
||||
TEST_ASSERT (ecma_date_day (0) == 0);
|
||||
TEST_ASSERT (ecma_date_day (MS_PER_DAY) == 1);
|
||||
|
||||
/* ecma_number_t ecma_date_time_within_day (time) */
|
||||
|
||||
TEST_ASSERT (ecma_date_time_within_day (0) == 0);
|
||||
TEST_ASSERT (ecma_date_time_within_day (42) == 42);
|
||||
TEST_ASSERT (ecma_date_time_within_day (42.51) == 42.51);
|
||||
TEST_ASSERT (ecma_date_time_within_day (MS_PER_DAY + 42) == 42);
|
||||
|
||||
/* int ecma_date_year_from_time (time) */
|
||||
|
||||
TEST_ASSERT (ecma_date_year_from_time (0) == 1970);
|
||||
@@ -119,13 +107,13 @@ main (void)
|
||||
/* ecma_number_t ecma_date_make_day (year, month, date) */
|
||||
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 0, 1) == 0);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, -1, 1) == -31);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 0, 2.5) == 1);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 1, 35) == 65);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 13, 35) == 430);
|
||||
TEST_ASSERT (ecma_date_make_day (2016, 2, 1) == 16861);
|
||||
TEST_ASSERT (ecma_date_make_day (2016, 8, 31) == 17075);
|
||||
TEST_ASSERT (ecma_date_make_day (2016, 9, 1) == 17075);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, -1, 1) == -2678400000);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 0, 2.5) == 86400000);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 1, 35) == 5616000000);
|
||||
TEST_ASSERT (ecma_date_make_day (1970, 13, 35) == 37152000000);
|
||||
TEST_ASSERT (ecma_date_make_day (2016, 2, 1) == 1456790400000);
|
||||
TEST_ASSERT (ecma_date_make_day (2016, 8, 31) == 1475280000000);
|
||||
TEST_ASSERT (ecma_date_make_day (2016, 9, 1) == 1475280000000);
|
||||
|
||||
/* ecma_number_t ecma_date_make_date (day, time) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user