| Index: src/js/macros.py
|
| diff --git a/src/js/macros.py b/src/js/macros.py
|
| index 3bcc8c114e422627199ba65d3a0d798a74a355f0..e180860a2bb3f1c4cdeaad8faa7e8e0a7e926d0c 100644
|
| --- a/src/js/macros.py
|
| +++ b/src/js/macros.py
|
| @@ -38,6 +38,32 @@
|
| # Constants used for getter and setter operations.
|
| define GETTER = 0;
|
| define SETTER = 1;
|
| +
|
| +# For date.js.
|
| +define HoursPerDay = 24;
|
| +define MinutesPerHour = 60;
|
| +define SecondsPerMinute = 60;
|
| +define msPerSecond = 1000;
|
| +define msPerMinute = 60000;
|
| +define msPerHour = 3600000;
|
| +define msPerDay = 86400000;
|
| +define msPerMonth = 2592000000;
|
| +
|
| +# Note: kDayZeroInJulianDay = ToJulianDay(1970, 0, 1).
|
| +define kInvalidDate = 'Invalid Date';
|
| +define kDayZeroInJulianDay = 2440588;
|
| +define kMonthMask = 0x1e0;
|
| +define kDayMask = 0x01f;
|
| +define kYearShift = 9;
|
| +define kMonthShift = 5;
|
| +
|
| +# Limits for parts of the date, so that we support all the dates that
|
| +# ECMA 262 - 15.9.1.1 requires us to, but at the same time be sure that
|
| +# the date (days since 1970) is in SMI range.
|
| +define kMinYear = -1000000;
|
| +define kMaxYear = 1000000;
|
| +define kMinMonth = -10000000;
|
| +define kMaxMonth = 10000000;
|
|
|
| # Safe maximum number of arguments to push to stack, when multiplied by
|
| # pointer size. Used by Function.prototype.apply(), Reflect.apply() and
|
| @@ -157,6 +183,44 @@
|
| # REGEXP_NUMBER_OF_CAPTURES
|
| macro NUMBER_OF_CAPTURES(array) = ((array)[0]);
|
|
|
| +# Limit according to ECMA 262 15.9.1.1
|
| +define MAX_TIME_MS = 8640000000000000;
|
| +# Limit which is MAX_TIME_MS + msPerMonth.
|
| +define MAX_TIME_BEFORE_UTC = 8640002592000000;
|
| +
|
| +# Gets the value of a Date object. If arg is not a Date object
|
| +# a type error is thrown.
|
| +macro CHECK_DATE(arg) = if (!%_IsDate(arg)) %_ThrowNotDateError();
|
| +macro LOCAL_DATE_VALUE(arg) = (%_DateField(arg, 0) + %_DateField(arg, 21));
|
| +macro UTC_DATE_VALUE(arg) = (%_DateField(arg, 0));
|
| +
|
| +macro LOCAL_YEAR(arg) = (%_DateField(arg, 1));
|
| +macro LOCAL_MONTH(arg) = (%_DateField(arg, 2));
|
| +macro LOCAL_DAY(arg) = (%_DateField(arg, 3));
|
| +macro LOCAL_WEEKDAY(arg) = (%_DateField(arg, 4));
|
| +macro LOCAL_HOUR(arg) = (%_DateField(arg, 5));
|
| +macro LOCAL_MIN(arg) = (%_DateField(arg, 6));
|
| +macro LOCAL_SEC(arg) = (%_DateField(arg, 7));
|
| +macro LOCAL_MS(arg) = (%_DateField(arg, 8));
|
| +macro LOCAL_DAYS(arg) = (%_DateField(arg, 9));
|
| +macro LOCAL_TIME_IN_DAY(arg) = (%_DateField(arg, 10));
|
| +
|
| +macro UTC_YEAR(arg) = (%_DateField(arg, 11));
|
| +macro UTC_MONTH(arg) = (%_DateField(arg, 12));
|
| +macro UTC_DAY(arg) = (%_DateField(arg, 13));
|
| +macro UTC_WEEKDAY(arg) = (%_DateField(arg, 14));
|
| +macro UTC_HOUR(arg) = (%_DateField(arg, 15));
|
| +macro UTC_MIN(arg) = (%_DateField(arg, 16));
|
| +macro UTC_SEC(arg) = (%_DateField(arg, 17));
|
| +macro UTC_MS(arg) = (%_DateField(arg, 18));
|
| +macro UTC_DAYS(arg) = (%_DateField(arg, 19));
|
| +macro UTC_TIME_IN_DAY(arg) = (%_DateField(arg, 20));
|
| +
|
| +macro TIMEZONE_OFFSET(arg) = (%_DateField(arg, 21));
|
| +
|
| +macro SET_UTC_DATE_VALUE(arg, value) = (%DateSetValue(arg, value, 1));
|
| +macro SET_LOCAL_DATE_VALUE(arg, value) = (%DateSetValue(arg, value, 0));
|
| +
|
| # Last input and last subject of regexp matches.
|
| define LAST_SUBJECT_INDEX = 1;
|
| macro LAST_SUBJECT(array) = ((array)[1]);
|
|
|