diff --git a/std/assembly/bindings/Date.ts b/std/assembly/bindings/Date.ts
index c02c9a6d4e..07456e3010 100644
--- a/std/assembly/bindings/Date.ts
+++ b/std/assembly/bindings/Date.ts
@@ -1,6 +1,7 @@
export declare function UTC(
// NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for
// converting the value to the WASM/JS boundary.
+ // It returns the number of milliseconds since January 1, 1970, 00:00:00 UTC.
year: i32,
month: i32,
day: i32,
@@ -9,4 +10,7 @@ export declare function UTC(
second: i32,
millisecond: f64
): f64;
+
export declare function now(): f64;
+
+export declare function getTimezoneOffset(): i32;
diff --git a/std/assembly/date.ts b/std/assembly/date.ts
index b2e7eff65e..f412e2bece 100644
--- a/std/assembly/date.ts
+++ b/std/assembly/date.ts
@@ -1,8 +1,21 @@
import {
UTC as Date_UTC,
- now as Date_now
+ now as Date_now,
+ getTimezoneOffset as Date_getTimezoneOffset
} from "./bindings/Date";
+import {
+ getCalendarDate,
+ TimeZone,
+ CalendarDate,
+ setFullYear,
+ setMonth,
+ setDate,
+ setHours,
+ setMinutes,
+ setSeconds,
+ setMilliseconds
+} from "./util/date";
export class Date {
@inline static UTC(
@@ -22,9 +35,13 @@ export class Date {
}
private value: i64;
+ private timeZone: TimeZone; // The local time zone
+ private localDate: CalendarDate | null;
+ private utcDate: CalendarDate | null;
constructor(value: i64) {
this.value = value;
+ this.timeZone = new TimeZone("GMT", Date_getTimezoneOffset());
}
getTime(): i64 {
@@ -35,4 +52,207 @@ export class Date {
this.value = value;
return value;
}
+
+ private getLocalCalendarDate(): CalendarDate {
+ if (this.isNormalizeLocalDate()) {
+ return this.localDate!;
+ } else if (this.localDate != null && !this.localDate!.isNormalized) {
+ return getCalendarDate(this.localDate!, this.value);
+ } else {
+ let cdate = new CalendarDate(this.value, this.timeZone);
+ this.localDate = getCalendarDate(cdate, this.value);
+ return this.localDate!;
+ }
+ }
+
+ private getUTCCalendarDate(): CalendarDate {
+ if (this.isNormalizeUTCDate()) {
+ return this.utcDate!;
+ } else if (this.utcDate != null) {
+ return getCalendarDate(this.utcDate!, this.value);
+ } else {
+ let cdate = new CalendarDate(this.value, TimeZone.UTC_TIME_ZONE);
+ this.utcDate = getCalendarDate(cdate, this.value);
+ return this.utcDate!;
+ }
+ }
+
+ private isNormalizeLocalDate(): bool {
+ return this.localDate != null
+ && this.localDate!.millis == this.value
+ && this.localDate!.isNormalized;
+ }
+
+ private isNormalizeUTCDate(): bool {
+ return this.utcDate != null
+ && this.utcDate!.millis == this.value
+ && this.utcDate!.isNormalized;
+ }
+
+ getFullYear(): i32 {
+ return this.getLocalCalendarDate().year;
+ }
+
+ /**
+ * The method sets the full year for a specified date according to local time.
+ * @param year the full year to set
+ * @returns Returns new timestamp.
+ */
+ setFullYear(year: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setFullYear(cdate, year);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCFullYear(): i32 {
+ return this.getUTCCalendarDate().year;
+ }
+
+ /**
+ * The setUTCFullYear() method sets the full year for a specified date according to universal time.
+ * @param year the full year to set.
+ */
+ setUTCFullYear(year: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setFullYear(cdate, year);
+ return this.setTime(cdate.millis);
+ }
+
+ getMonth(): i32 {
+ return this.getLocalCalendarDate().month - 1; // Adjust 1-based to 0-based
+ }
+
+ setMonth(month: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setMonth(cdate, month + 1);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCMonth(): i32 {
+ return this.getUTCCalendarDate().month - 1; // adjust 1-based to 0-based;
+ }
+
+ setUTCMonth(month: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setMonth(cdate, month + 1);
+ return this.setTime(cdate.millis);
+ }
+
+ getDate(): i32 {
+ return this.getLocalCalendarDate().dayOfMonth;
+ }
+
+ setDate(date: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setDate(cdate, date);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCDate(): i32 {
+ return this.getUTCCalendarDate().dayOfMonth;
+ }
+
+ setUTCDate(date: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setDate(cdate, date);
+ return this.setTime(cdate.millis);
+ }
+
+ /**
+ * Returns the day of the week represented by this date. The
+ * returned value ({@code 0} = Sunday, {@code 1} = Monday,
+ * {@code 2} = Tuesday, {@code 3} = Wednesday, {@code 4} =
+ * Thursday, {@code 5} = Friday, {@code 6} = Saturday)
+ */
+ getDay(): i32 {
+ return this.getLocalCalendarDate().dayOfWeek - 1 ;
+ }
+
+ getUTCDay(): i32 {
+ return this.getUTCCalendarDate().dayOfWeek - 1 ;
+ }
+
+ getHours(): i32 {
+ return this.getLocalCalendarDate().hours;
+ }
+
+ setHours(hours: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setHours(cdate, hours);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCHours(): i32 {
+ return this.getUTCCalendarDate().hours;
+ }
+
+ setUTCHours(hours: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setHours(cdate, hours);
+ return this.setTime(cdate.millis);
+ }
+
+ getMinutes(): i32 {
+ return this.getLocalCalendarDate().minutes;
+ }
+
+ setMinutes(minutes: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setMinutes(cdate, minutes);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCMinutes(): i32 {
+ return this.getUTCCalendarDate().minutes;
+ }
+
+ setUTCMinutes(minutes: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setMinutes(cdate, minutes);
+ return this.setTime(cdate.millis);
+ }
+
+ getSeconds(): i32 {
+ return this.getLocalCalendarDate().seconds;
+ }
+
+ setSeconds(seconds: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setSeconds(cdate, seconds);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCSeconds(): i32 {
+ return this.getUTCCalendarDate().seconds;
+ }
+
+ setUTCSeconds(seconds: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setSeconds(cdate, seconds);
+ return this.setTime(cdate.millis);
+ }
+
+ getMilliseconds(): i32 {
+ return this.getLocalCalendarDate().milliseconds;
+ }
+
+ setMilliseconds(milliseconds: i32): i64 {
+ var cdate = this.getLocalCalendarDate();
+ setMilliseconds(cdate, milliseconds);
+ return this.setTime(cdate.millis);
+ }
+
+ getUTCMilliseconds(): i32 {
+ return this.getUTCCalendarDate().milliseconds;
+ }
+
+ setUTCMilliseconds(milliseconds: i32): i64 {
+ var cdate = this.getUTCCalendarDate();
+ setMilliseconds(cdate, milliseconds);
+ return this.setTime(cdate.millis);
+ }
+
+ getTimezoneOffset(): i32 {
+ return Date_getTimezoneOffset();
+ }
}
diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts
index 618fbc59c0..81de0bdbe4 100644
--- a/std/assembly/index.d.ts
+++ b/std/assembly/index.d.ts
@@ -1700,15 +1700,77 @@ declare class Date {
minute: i32,
second: i32,
millisecond: i32
- ): i64;
+ ): number;
/** Returns the current UTC timestamp in milliseconds. */
- static now(): i64;
+ static now(): number;
/** Constructs a new date object from an UTC timestamp in milliseconds. */
- constructor(value: i64);
+ constructor(value: number);
+ /** Returns the time zone difference, in minutes, from current locale(host system settings) to UTC. */
+ getTimezoneOffset(): i32;
/** Returns the UTC timestamp of this date in milliseconds. */
- getTime(): i64;
+ getTime(): number;
/** Sets the UTC timestamp of this date in milliseconds. */
setTime(value: i64): i64;
+ /** Returns the year of the specified date according to local time. */
+ getFullYear(): i32;
+ /** Sets the full year for a specified date according to local time. Returns new timestamp. */
+ setFullYear(year: i32): i64;
+ /** Returns the month in the specified date according to local time. As a zero-based value (where zero indicates the first month of the year) */
+ getMonth(): i32;
+ /** Sets the month for a specified date according to the currently set year. Return UTC milliseconds timestamp. */
+ setMonth(month: i32): i32;
+ /** Return the day of the month of this date in milliseconds, 1-based. */
+ getDate(): i32;
+ /** Sets the day of the Date object relative to the beginning of the currently set month. */
+ setDate(date: i32): i64;
+ /** Returns the day of the week for the specified date according to local time, where 0 represents Sunday */
+ getDay(): i32;
+ /** Returns the hours of the specified date according to local time. */
+ getHours(): i32;
+ /** sets the hours for a specified date according to local time, and returns the UTC milliseconds timestamps. */
+ setHours(hours: i32): i64;
+ /** Returns the minutes of the specified date according to local time. */
+ getMinutes(): i32;
+ /** Sets the minutes for a specified date according to local time. */
+ setMinutes(minutes: i32): i64;
+ /** Returns the seconds of the specified date according to local time. */
+ getSeconds(): i32;
+ /** Sets the seconds for a specified date according to local time. */
+ setSeconds(seconds: i32): i64;
+ /** Returns the milliseconds in the specified date according to local time. */
+ getMilliseconds(): i32;
+ /** Sets the milliseconds for a specified date according to local time. */
+ setMilliseconds(milliseconds: i32): i64;
+ /** Returns the year of the specified date according to UTC timestamp. */
+ getUTCFullYear(): i32;
+ /** Sets the full year for a specified date according to UTC timestamp. Returns new timestamp. */
+ setUTCFullYear(year: i32): i64;
+ /** Returns the month in the specified date according to UTC timestamp. As a zero-based value (where zero indicates the first month of the year) */
+ getUTCMonth(): i32;
+ /** Sets the month for a specified date according to the currently set year. Return UTC milliseconds timestamp. */
+ setUTCMonth(month: i32): i32;
+ /** Return the day of the month of this date in milliseconds, 1-based. */
+ getUTCDate(): i32;
+ /** Sets the day of the Date object relative to the beginning of the currently set month. */
+ setUTCDate(date: i32): i64;
+ /** Returns the day of the week for the specified date according to UTC timestamp, where 0 represents Sunday */
+ getUTCDay(): i32;
+ /** Returns the hours of the specified date according to UTC timestamp. */
+ getUTCHours(): i32;
+ /** sets the hours for a specified date according to UTC time, and returns the UTC milliseconds timestamps. */
+ setUTCHours(hours: i32): i64;
+ /** Returns the minutes of the specified date according to UTC timestamp. */
+ getUTCMinutes(): i32;
+ /** Sets the minutes for a specified date according to UTC time. */
+ setUTCMinutes(minutes: i32): i64;
+ /** Returns the seconds of the specified date according to UTC timestamp. */
+ getUTCSeconds(): i32;
+ /** Sets the seconds for a specified date according to UTC time. */
+ setUTCSeconds(seconds: i32): i64;
+ /** Returns the milliseconds in the specified date according to the UTC timestamp. */
+ getUTCMilliseconds(): i32;
+ /** Sets the milliseconds for a specified date according to UTC time. */
+ setUTCMilliseconds(milliseconds: i32): i64;
}
/** Class for representing a runtime error. Base class of all errors. */
diff --git a/std/assembly/util/date.ts b/std/assembly/util/date.ts
new file mode 100644
index 0000000000..0599338506
--- /dev/null
+++ b/std/assembly/util/date.ts
@@ -0,0 +1,383 @@
+export class CalendarDate {
+ year: i32;
+ month: i32; // 1 ~ 12
+ dayOfMonth: i32; // 1 ~ 31
+ dayOfWeek: i32; // 1 ~ 7
+ hours: i32;
+ minutes: i32;
+ seconds: i32;
+ milliseconds: i32;
+ isNormalized: bool;
+
+ millis: i64; // The date milliseconds
+ timeOfDay: i32; // the time of day
+ fixedDate: i32; // the time of days;
+ timeZone: TimeZone; // the local time zone
+
+ constructor(millis: i64, timeZone: TimeZone) {
+ this.millis = millis;
+ this.isNormalized = false;
+ this.timeZone = timeZone;
+ }
+}
+
+/**
+ * Represents a time zone for use with a Gregorian calendar.
+ * The class holds an offset from GMT, called raw offset, and start
+ * and end rules for a daylight saving time schedule
+ */
+export class TimeZone {
+
+ ID: string;
+ /**
+ * The raw GMT offset in milliseconds between this zone and GMT.
+ * Negative offsets are to the west of Greenwich.
+ * To obtain local standard time, add the offset to GMT time.
+ */
+ rawOffset: i32;
+
+ constructor(ID: string, rawOffset: i32) {
+ this.ID = ID;
+ this.rawOffset = rawOffset;
+ }
+
+ static UTC_TIME_ZONE: TimeZone = new TimeZone("UTC", 0);
+}
+
+class CalendarUtils {
+ static SECOND_IN_MILLIS: i32 = 1000;
+ static MINUTE_IN_MILLIS: i32 = 60000; // 1000 * 60
+ static HOUR_IN_MILLIS: i32 = 3600000; // 1000 * 60 * 60
+ static DAY_IN_MILLIS: i32 = 86400000; // 1000 * 60 * 60 * 24
+ static DAY_IN_HOURS: i32 = 24;
+ static YEAR_IN_MONTHS: i32 = 12;
+
+ static JANUARY: i32 = 1;
+ static FEBRUARY: i32 = 2;
+ static MARCH: i32 = 3;
+ static APRIL: i32 = 4;
+ static MAY: i32 = 5;
+ static JUNE: i32 = 6;
+ static JULY: i32 = 7;
+ static AUGUST: i32 = 8;
+ static SEPTEMBER: i32 = 9;
+ static OCTOBER: i32 = 10;
+ static NOVEMBER: i32 = 11;
+ static DECEMBER: i32 = 12;
+
+ static BASE_YEAR: i32 = 1970;
+ // day of week constants
+ static SUNDAY: i32 = 1;
+ static MONDAY: i32 = 2;
+ static TUESDAY: i32 = 3;
+ static WEDNESDAY: i32 = 4;
+ static THURSDAY: i32 = 5;
+ static FRIDAY: i32 = 6;
+ static SATURDAY: i32 = 7;
+ // ACCUMULATED_DAYS_IN_MONTH 12/1 1/1 2/1 3/1 4/1 5/1 6/1 7/1 8/1 9/1 10/1 11/1 12/1
+ static ACCUMULATED_DAYS_IN_MONTH: i32[ ] = [-30, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+ static FIXED_DATES: i32[] = [
+ 719163, // 1970
+ 719528, // 1971
+ 719893, // 1972
+ 720259, // 1973
+ 720624, // 1974
+ 720989, // 1975
+ 721354, // 1976
+ 721720, // 1977
+ 722085, // 1978
+ 722450, // 1979
+ 722815, // 1980
+ 723181, // 1981
+ 723546, // 1982
+ 723911, // 1983
+ 724276, // 1984
+ 724642, // 1985
+ 725007, // 1986
+ 725372, // 1987
+ 725737, // 1988
+ 726103, // 1989
+ 726468, // 1990
+ 726833, // 1991
+ 727198, // 1992
+ 727564, // 1993
+ 727929, // 1994
+ 728294, // 1995
+ 728659, // 1996
+ 729025, // 1997
+ 729390, // 1998
+ 729755, // 1999
+ 730120, // 2000
+ 730486, // 2001
+ 730851, // 2002
+ 731216, // 2003
+ 731581, // 2004
+ 731947, // 2005
+ 732312, // 2006
+ 732677, // 2007
+ 733042, // 2008
+ 733408, // 2009
+ 733773, // 2010
+ 734138, // 2011
+ 734503, // 2012
+ 734869, // 2013
+ 735234, // 2014
+ 735599, // 2015
+ 735964, // 2016
+ 736330, // 2017
+ 736695, // 2018
+ 737060, // 2019
+ 737425, // 2020
+ 737791, // 2021
+ 738156, // 2022
+ 738521, // 2023
+ 738886, // 2024
+ 739252, // 2025
+ 739617, // 2026
+ 739982, // 2027
+ 740347, // 2028
+ 740713, // 2029
+ 741078, // 2030
+ 741443, // 2031
+ 741808, // 2032
+ 742174, // 2033
+ 742539, // 2034
+ 742904, // 2035
+ 743269, // 2036
+ 743635, // 2037
+ 744000, // 2038
+ 744365 // 2039
+ ];
+
+ // The number of days between January 1, 1 and January 1, 1970 (Gregorian)
+ static EPOCH_OFFSET: i32 = 719163;
+
+ static floorDivide(n: i32, d: i32): i32 {
+ return ((n >= 0) ? (n / d) : (((n + 1) / d) - 1));
+ }
+
+ static mod(x: i32, y: i32): i32 {
+ return (x - y * CalendarUtils.floorDivide(x, y));
+ }
+
+ @inline
+ static isLeapYear(year: i32): bool {
+ return (year & 3) == 0 && ((year % 25) != 0 || (year & 15) == 0);
+ }
+
+ @inline
+ static countLeaps(year: i32): i32 {
+ if (year >= 0) {
+ return year / 4 - year / 100 + year / 400;
+ } else {
+ return CalendarUtils.floorDivide(year, 4)
+ - CalendarUtils.floorDivide(year, 100)
+ + CalendarUtils.floorDivide(year, 400);
+ }
+ }
+
+ /**
+ * Returns the Geogorian year number of the given fixed date.
+ */
+ static getYearFromFixedDate(fixedDate: i32): i32 {
+ var d0: i32;
+ var d1: i32, d2: i32, d3: i32;
+ var n400: i32, n100: i32, n4: i32, n1: i32;
+ var year: i32;
+ if ( fixedDate > 0) {
+ d0 = fixedDate - 1;
+ n400 = d0 / 146097;
+ d1 = d0 % 146097;
+ n100 = d1 / 36524;
+ d2 = d1 % 36524;
+ n4 = d2 / 1461;
+ d3 = d2 % 1461;
+ n1 = d3 / 365;
+ // d4 = (d3 % 365) + 1;
+ } else {
+ d0 = fixedDate - 1;
+ n400 = CalendarUtils.floorDivide(d0, 146097);
+ d1 = CalendarUtils.mod(d0, 146097);
+ n100 = CalendarUtils.floorDivide(d1, 36524);
+ d2 = CalendarUtils.mod(d1, 36524);
+ n4 = CalendarUtils.floorDivide(d2, 1461);
+ d3 = CalendarUtils.mod(d2, 1461);
+ n1 = CalendarUtils.floorDivide(d3, 365);
+ // d4 = CalendarUtils.mod(d3, 365) + 1;
+ }
+ year = 400 * n400 + 100 * n100 + 4 * n4 + n1;
+ if (!(n100 == 4 || n1 == 4)) {
+ ++year;
+ }
+ return year;
+ }
+
+ static getDayOfWeekFromFixedDate(fixedDate: i32): i32 {
+ if (fixedDate >= 0) {
+ return (fixedDate % 7) + CalendarUtils.SUNDAY;
+ }
+ return CalendarUtils.mod(fixedDate, 7) + CalendarUtils.SUNDAY;
+ }
+
+ private static hitFixedDateYear(year: i32): bool {
+ return year >= 1970 && year <= 2039;
+ }
+
+ /**
+ * Returns the days of the specified date.
+ * @param year the year of the date
+ * @param month the month of the date, 1-based
+ * @param dayOfMonth the day of the month, 1-based
+ */
+ static getFixedDate(year: i32, month: i32, dayOfMonth: i32): i32 {
+ var isJan1: bool = month == CalendarUtils.JANUARY && dayOfMonth == 1;
+ if (isJan1 && CalendarUtils.hitFixedDateYear(year)) {
+ return CalendarUtils.FIXED_DATES[year - CalendarUtils.BASE_YEAR];
+ }
+ var prevyear = year - 1;
+ var days = dayOfMonth;
+ days += (365 * prevyear) + CalendarUtils.countLeaps(prevyear) + ((367 * month - 362) / 12);
+ if (month > CalendarUtils.FEBRUARY) {
+ days -= CalendarUtils.isLeapYear(year) ? 1 : 2;
+ }
+ return days;
+ }
+}
+
+function setTimeOfDay(cdate: CalendarDate, fraction: i32): void {
+ var time = fraction;
+ var hours = time / CalendarUtils.HOUR_IN_MILLIS;
+ time %= CalendarUtils.HOUR_IN_MILLIS;
+ var minutes = time / CalendarUtils.MINUTE_IN_MILLIS;
+ time %= CalendarUtils.MINUTE_IN_MILLIS;
+ var seconds = time / CalendarUtils.SECOND_IN_MILLIS;
+ time %= CalendarUtils.SECOND_IN_MILLIS;
+ cdate.hours = hours;
+ cdate.minutes = minutes;
+ cdate.seconds = seconds;
+ cdate.milliseconds = time;
+ cdate.timeOfDay = fraction;
+}
+
+export function getCalendarDate(cdate: CalendarDate, millis: i64): CalendarDate {
+ var ms: i32 = 0; // time of day
+ var days: i32 = 0; // fixed date
+ var timezone = cdate.timeZone;
+ // adjust to local time if 'date' has time zone.
+ if (timezone != null && timezone.rawOffset != 0) {
+ let zoneOffset = timezone.rawOffset;
+ days += ((millis + zoneOffset) / CalendarUtils.DAY_IN_MILLIS);
+ ms += ((millis + zoneOffset) % CalendarUtils.DAY_IN_MILLIS);
+ } else {
+ days = (millis / CalendarUtils.DAY_IN_MILLIS);
+ ms = (millis % CalendarUtils.DAY_IN_MILLIS);
+ }
+ days += CalendarUtils.EPOCH_OFFSET;
+ cdate.millis = millis;
+ setCalendarDateFromFixedDate(cdate, days);
+ setTimeOfDay(cdate, ms);
+ cdate.isNormalized = true;
+ return cdate;
+}
+
+/**
+ * Get calendar date, the millis timestamp is UTC timestamp
+ * @param cdate the date to set
+ * @param mills the UTC timestamp
+ */
+function setCalendarDateFromFixedDate(date: CalendarDate, fixedDate: i32): void {
+ var year: i32 = CalendarUtils.getYearFromFixedDate(fixedDate);
+ var jan1: i32 = CalendarUtils.getFixedDate(year, CalendarUtils.JANUARY, 1);
+ var isLeap: bool = CalendarUtils.isLeapYear(year);
+ var priorDays: i32 = fixedDate - jan1;
+ var mar1: i32 = jan1 + 31 + 28;
+ if (isLeap) {
+ ++ mar1;
+ }
+ if (fixedDate >= mar1) {
+ priorDays += isLeap ? 1 : 2;
+ }
+ var month: i32 = 12 * priorDays + 373;
+ if (month > 0) {
+ month /= 367;
+ } else {
+ month = CalendarUtils.floorDivide(month, 367);
+ }
+ var accumulated = CalendarUtils.ACCUMULATED_DAYS_IN_MONTH[month];
+ var month1 = jan1 + accumulated;
+ if (isLeap && month >= CalendarUtils.MARCH) {
+ ++ month1;
+ }
+ var dayOfMonth = (fixedDate - month1) + 1;
+ var dayOfWeek = CalendarUtils.getDayOfWeekFromFixedDate(fixedDate);
+
+ date.year = year;
+ date.month = month;
+ date.dayOfMonth = dayOfMonth;
+ date.dayOfWeek = dayOfWeek;
+ date.fixedDate = fixedDate;
+}
+
+export function setHours(cdate: CalendarDate, hours: i32): void {
+ if (cdate.hours != hours) {
+ let oldHours = cdate.hours;
+ cdate.millis += (hours - oldHours) * CalendarUtils.HOUR_IN_MILLIS;
+ cdate.isNormalized = false;
+ }
+}
+
+export function setMinutes(cdate: CalendarDate, minutes: i32): void {
+ if (cdate.minutes != minutes) {
+ let oldMinutes = cdate.minutes;
+ cdate.millis += (minutes - oldMinutes) * CalendarUtils.MINUTE_IN_MILLIS;
+ cdate.isNormalized = false;
+ }
+}
+
+export function setSeconds(cdate: CalendarDate, seconds: i32): void {
+ if (cdate.seconds != seconds) {
+ let oldSeconds = cdate.seconds;
+ cdate.millis += (seconds - oldSeconds) * CalendarUtils.SECOND_IN_MILLIS;
+ cdate.isNormalized = false;
+ }
+}
+
+export function setMilliseconds(cdate: CalendarDate, milliseconds: i32): void {
+ if (cdate.milliseconds != milliseconds) {
+ let oldMilliseconds = cdate.milliseconds;
+ cdate.millis += (milliseconds - oldMilliseconds);
+ cdate.isNormalized = false;
+ }
+}
+
+export function setFullYear(cdate: CalendarDate, year: i32): void {
+ if (cdate.year != year) {
+ let oldyearJan1 = CalendarUtils.getFixedDate(cdate.year, CalendarUtils.JANUARY, 1);
+ let newYearJan1 = CalendarUtils.getFixedDate(year, CalendarUtils.JANUARY, 1);
+ let newFixedDate: i32 = newYearJan1 + (cdate.fixedDate - oldyearJan1);
+ setCalendarDateFromFixedDate(cdate, newFixedDate);
+ cdate.millis += (newYearJan1 - oldyearJan1) * CalendarUtils.DAY_IN_MILLIS;
+ }
+}
+
+export function setMonth(cdate: CalendarDate, month: i32): void {
+ if (cdate.month != month) {
+ let addyear = CalendarUtils.floorDivide(month, CalendarUtils.YEAR_IN_MONTHS);
+ let newMonth = CalendarUtils.mod(month, CalendarUtils.YEAR_IN_MONTHS);
+ let oldDays = cdate.dayOfMonth;
+ let newMonthDays = CalendarUtils.getFixedDate(cdate.year + addyear, newMonth, 1);
+ let newFixedDate = newMonthDays + oldDays - 1;
+ let oldFixedDate = cdate.fixedDate;
+ setCalendarDateFromFixedDate(cdate, newFixedDate);
+ cdate.millis += (newFixedDate - oldFixedDate) * CalendarUtils.DAY_IN_MILLIS;
+ }
+}
+
+export function setDate(cdate: CalendarDate, date: i32): void {
+ if (cdate.dayOfMonth != date) {
+ let oldDayOfMonth = cdate.dayOfMonth;
+ let newFixedDate = cdate.fixedDate + date - oldDayOfMonth;
+ setCalendarDateFromFixedDate(cdate, newFixedDate);
+ cdate.millis += (date - oldDayOfMonth) * CalendarUtils.DAY_IN_MILLIS;
+ }
+}
diff --git a/tests/compiler.js b/tests/compiler.js
index b641f3954c..bca937b43c 100644
--- a/tests/compiler.js
+++ b/tests/compiler.js
@@ -392,6 +392,12 @@ function testInstantiate(basename, binaryBuffer, glue, stderr, wasiOptions) {
}
});
+ function getTimezoneOffset() {
+ return 0;
+ }
+
+ Date.getTimezoneOffset = getTimezoneOffset;
+
var imports = rtrace.install({
env: {
memory,
diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat
index fb415c9904..4ac8532384 100644
--- a/tests/compiler/std/date.optimized.wat
+++ b/tests/compiler/std/date.optimized.wat
@@ -1,125 +1,94 @@
(module
- (type $none_=>_none (func))
(type $i32_i32_=>_none (func (param i32 i32)))
+ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
(type $i32_=>_none (func (param i32)))
+ (type $none_=>_none (func))
(type $i32_=>_i32 (func (param i32) (result i32)))
(type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
(type $none_=>_i32 (func (result i32)))
+ (type $i32_i32_=>_i64 (func (param i32 i32) (result i64)))
(type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32)))
+ (type $i32_i32_i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32)))
+ (type $i64_i32_i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i64 i32 i32 i32 i32 i32 i32 i32 i32)))
+ (type $i64_=>_i32 (func (param i64) (result i32)))
+ (type $i32_i64_=>_i32 (func (param i32 i64) (result i32)))
+ (type $i64_i32_=>_i32 (func (param i64 i32) (result i32)))
(type $none_=>_f64 (func (result f64)))
(type $i32_i32_i32_i32_i32_i32_f64_=>_f64 (func (param i32 i32 i32 i32 i32 i32 f64) (result f64)))
- (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
+ (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64)))
(import "Date" "now" (func $~lib/bindings/Date/now (result f64)))
+ (import "Date" "getTimezoneOffset" (func $~lib/bindings/Date/getTimezoneOffset (result i32)))
(memory $0 1)
- (data (i32.const 1036) ",")
- (data (i32.const 1048) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s")
- (data (i32.const 1084) "<")
- (data (i32.const 1096) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e")
- (data (i32.const 1148) "<")
- (data (i32.const 1160) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s")
- (data (i32.const 1276) "<")
- (data (i32.const 1288) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e")
- (data (i32.const 1340) ",")
- (data (i32.const 1352) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s")
- (data (i32.const 1420) "<")
- (data (i32.const 1432) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s")
- (data (i32.const 1488) "\04\00\00\00 \00\00\00\00\00\00\00 ")
- (data (i32.const 1516) " ")
- (global $std/date/creationTime (mut i64) (i64.const 0))
+ (data (i32.const 1036) "<")
+ (data (i32.const 1048) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s")
+ (data (i32.const 1132) "<")
+ (data (i32.const 1144) "\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e")
+ (data (i32.const 1196) ",")
+ (data (i32.const 1208) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s")
+ (data (i32.const 1244) "<")
+ (data (i32.const 1256) "\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e")
+ (data (i32.const 1372) "<")
+ (data (i32.const 1384) "\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s")
+ (data (i32.const 1436) "\1c")
+ (data (i32.const 1448) "\01\00\00\00\06\00\00\00U\00T\00C")
+ (data (i32.const 1468) "L")
+ (data (i32.const 1484) "4\00\00\00\e2\ff\ff\ff\00\00\00\00\1f\00\00\00;\00\00\00Z\00\00\00x\00\00\00\97\00\00\00\b5\00\00\00\d4\00\00\00\f3\00\00\00\11\01\00\000\01\00\00N\01")
+ (data (i32.const 1548) ",")
+ (data (i32.const 1560) "\04\00\00\00\10\00\00\00\d0\05\00\00\d0\05\00\004\00\00\00\0d")
+ (data (i32.const 1596) ",\01")
+ (data (i32.const 1612) "\18\01\00\00;\f9\n\00\a8\fa\n\00\15\fc\n\00\83\fd\n\00\f0\fe\n\00]\00\0b\00\ca\01\0b\008\03\0b\00\a5\04\0b\00\12\06\0b\00\7f\07\0b\00\ed\08\0b\00Z\n\0b\00\c7\0b\0b\004\0d\0b\00\a2\0e\0b\00\0f\10\0b\00|\11\0b\00\e9\12\0b\00W\14\0b\00\c4\15\0b\001\17\0b\00\9e\18\0b\00\0c\1a\0b\00y\1b\0b\00\e6\1c\0b\00S\1e\0b\00\c1\1f\0b\00.!\0b\00\9b\"\0b\00\08$\0b\00v%\0b\00\e3&\0b\00P(\0b\00\bd)\0b\00++\0b\00\98,\0b\00\05.\0b\00r/\0b\00\e00\0b\00M2\0b\00\ba3\0b\00\'5\0b\00\956\0b\00\028\0b\00o9\0b\00\dc:\0b\00J<\0b\00\b7=\0b\00$?\0b\00\91@\0b\00\ffA\0b\00lC\0b\00\d9D\0b\00FF\0b\00\b4G\0b\00!I\0b\00\8eJ\0b\00\fbK\0b\00iM\0b\00\d6N\0b\00CP\0b\00\b0Q\0b\00\1eS\0b\00\8bT\0b\00\f8U\0b\00eW\0b\00\d3X\0b\00@Z\0b\00\ad[\0b")
+ (data (i32.const 1900) ",")
+ (data (i32.const 1912) "\04\00\00\00\10\00\00\00P\06\00\00P\06\00\00\18\01\00\00F")
+ (data (i32.const 1948) ",")
+ (data (i32.const 1960) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s")
+ (data (i32.const 1996) "\1c")
+ (data (i32.const 2008) "\01\00\00\00\06\00\00\00G\00M\00T")
+ (data (i32.const 2028) "<")
+ (data (i32.const 2040) "\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l")
+ (data (i32.const 2092) ",")
+ (data (i32.const 2104) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s")
+ (data (i32.const 2140) ",")
+ (data (i32.const 2152) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s")
+ (data (i32.const 2192) "\07\00\00\00 \00\00\00\00\00\00\00 ")
+ (data (i32.const 2228) "\02\t")
+ (global $~lib/rt/itcms/white (mut i32) (i32.const 0))
+ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0))
+ (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0))
+ (global $~lib/rt/itcms/state (mut i32) (i32.const 0))
(global $~lib/rt/itcms/total (mut i32) (i32.const 0))
(global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024))
- (global $~lib/rt/itcms/state (mut i32) (i32.const 0))
(global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0))
(global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0))
- (global $~lib/rt/itcms/iter (mut i32) (i32.const 0))
- (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0))
- (global $~lib/rt/itcms/white (mut i32) (i32.const 0))
(global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0))
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0))
+ (global $~lib/util/date/TimeZone.UTC_TIME_ZONE (mut i32) (i32.const 0))
+ (global $std/date/creationTime (mut i64) (i64.const 0))
(global $std/date/date (mut i32) (i32.const 0))
- (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908))
+ (global $std/date/millis (mut i64) (i64.const 0))
+ (global $std/date/date1 (mut i32) (i32.const 0))
+ (global $std/date/date2 (mut i32) (i32.const 0))
+ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18636))
(export "memory" (memory $0))
(start $~start)
- (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32)
- local.get $0
- local.get $0
- i32.store offset=4
- local.get $0
- local.get $0
- i32.store offset=8
- local.get $0
- )
- (func $~lib/rt/itcms/visitRoots
- (local $0 i32)
- (local $1 i32)
- global.get $std/date/date
- local.tee $0
- if
- local.get $0
- call $~lib/rt/itcms/__visit
- end
- i32.const 1296
- call $~lib/rt/itcms/__visit
- i32.const 1104
- call $~lib/rt/itcms/__visit
- global.get $~lib/rt/itcms/pinSpace
- local.tee $1
- i32.load offset=4
- i32.const -4
- i32.and
- local.set $0
- loop $while-continue|0
- local.get $0
- local.get $1
- i32.ne
- if
- local.get $0
- i32.load offset=4
- i32.const 3
- i32.and
- i32.const 3
- i32.ne
- if
- i32.const 0
- i32.const 1168
- i32.const 159
- i32.const 16
- call $~lib/builtins/abort
- unreachable
- end
- local.get $0
- i32.const 20
- i32.add
- call $~lib/rt/__visit_members
- local.get $0
- i32.load offset=4
- i32.const -4
- i32.and
- local.set $0
- br $while-continue|0
- end
- end
- )
- (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32)
+ (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32)
local.get $0
local.get $1
local.get $0
i32.load offset=4
- i32.const -4
+ i32.const 3
i32.and
i32.or
i32.store offset=4
)
- (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32)
+ (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32)
local.get $0
- local.get $1
local.get $0
- i32.load offset=4
- i32.const 3
- i32.and
- i32.or
i32.store offset=4
+ local.get $0
+ local.get $0
+ i32.store offset=8
+ local.get $0
)
(func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
@@ -154,7 +123,7 @@
i32.eqz
if
i32.const 0
- i32.const 1168
+ i32.const 1056
i32.const 147
i32.const 30
call $~lib/builtins/abort
@@ -173,7 +142,7 @@
if
i32.const 0
local.get $0
- i32.const 17908
+ i32.const 18636
i32.lt_u
local.get $0
i32.load offset=8
@@ -181,7 +150,7 @@
i32.eqz
if
i32.const 0
- i32.const 1168
+ i32.const 1056
i32.const 127
i32.const 18
call $~lib/builtins/abort
@@ -195,7 +164,7 @@
i32.eqz
if
i32.const 0
- i32.const 1168
+ i32.const 1056
i32.const 131
i32.const 16
call $~lib/builtins/abort
@@ -219,12 +188,12 @@
i32.const 1
else
local.get $1
- i32.const 1488
+ i32.const 2192
i32.load
i32.gt_u
if
- i32.const 1296
- i32.const 1360
+ i32.const 1152
+ i32.const 1216
i32.const 22
i32.const 28
call $~lib/builtins/abort
@@ -233,7 +202,7 @@
local.get $1
i32.const 3
i32.shl
- i32.const 1492
+ i32.const 2196
i32.add
i32.load
i32.const 32
@@ -247,6 +216,155 @@
end
call $~lib/rt/itcms/Object#linkTo
)
+ (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $1
+ i32.eqz
+ if
+ return
+ end
+ local.get $0
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 1056
+ i32.const 294
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/rt/itcms/white
+ local.get $1
+ i32.const 20
+ i32.sub
+ local.tee $1
+ i32.load offset=4
+ i32.const 3
+ i32.and
+ i32.eq
+ if
+ local.get $0
+ i32.const 20
+ i32.sub
+ i32.load offset=4
+ i32.const 3
+ i32.and
+ local.tee $0
+ local.set $2
+ local.get $0
+ global.get $~lib/rt/itcms/white
+ i32.eqz
+ i32.eq
+ if
+ local.get $1
+ call $~lib/rt/itcms/Object#makeGray
+ else
+ global.get $~lib/rt/itcms/state
+ i32.const 1
+ i32.eq
+ i32.const 0
+ local.get $2
+ i32.const 3
+ i32.eq
+ select
+ if
+ local.get $1
+ call $~lib/rt/itcms/Object#makeGray
+ end
+ end
+ end
+ )
+ (func $~lib/util/date/TimeZone#set:ID (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store
+ local.get $0
+ local.get $1
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/rt/itcms/visitRoots
+ (local $0 i32)
+ (local $1 i32)
+ global.get $std/date/date
+ local.tee $0
+ if
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ global.get $std/date/date1
+ local.tee $0
+ if
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ global.get $std/date/date2
+ local.tee $0
+ if
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ i32.const 1152
+ call $~lib/rt/itcms/__visit
+ i32.const 1264
+ call $~lib/rt/itcms/__visit
+ global.get $~lib/util/date/TimeZone.UTC_TIME_ZONE
+ local.tee $0
+ if
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ i32.const 1568
+ call $~lib/rt/itcms/__visit
+ i32.const 1920
+ call $~lib/rt/itcms/__visit
+ global.get $~lib/rt/itcms/pinSpace
+ local.tee $1
+ i32.load offset=4
+ i32.const -4
+ i32.and
+ local.set $0
+ loop $while-continue|0
+ local.get $0
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load offset=4
+ i32.const 3
+ i32.and
+ i32.const 3
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1056
+ i32.const 159
+ i32.const 16
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ i32.const 20
+ i32.add
+ call $~lib/rt/__visit_members
+ local.get $0
+ i32.load offset=4
+ i32.const -4
+ i32.and
+ local.set $0
+ br $while-continue|0
+ end
+ end
+ )
+ (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ local.get $0
+ i32.load offset=4
+ i32.const -4
+ i32.and
+ i32.or
+ i32.store offset=4
+ )
(func $~lib/rt/itcms/__visit (param $0 i32)
local.get $0
i32.eqz
@@ -284,7 +402,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 273
i32.const 14
call $~lib/builtins/abort
@@ -304,7 +422,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 275
i32.const 14
call $~lib/builtins/abort
@@ -347,7 +465,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 288
i32.const 14
call $~lib/builtins/abort
@@ -439,7 +557,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 201
i32.const 14
call $~lib/builtins/abort
@@ -453,7 +571,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 203
i32.const 14
call $~lib/builtins/abort
@@ -526,7 +644,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 224
i32.const 16
call $~lib/builtins/abort
@@ -581,7 +699,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 239
i32.const 14
call $~lib/builtins/abort
@@ -596,7 +714,7 @@
i32.ne
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 240
i32.const 14
call $~lib/builtins/abort
@@ -644,7 +762,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 256
i32.const 14
call $~lib/builtins/abort
@@ -714,7 +832,7 @@
i32.gt_u
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 381
i32.const 14
call $~lib/builtins/abort
@@ -742,7 +860,7 @@
i32.lt_u
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 388
i32.const 16
call $~lib/builtins/abort
@@ -770,7 +888,7 @@
i32.lt_u
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 401
i32.const 5
call $~lib/builtins/abort
@@ -838,10 +956,10 @@
if
unreachable
end
- i32.const 17920
+ i32.const 18640
i32.const 0
i32.store
- i32.const 19488
+ i32.const 20208
i32.const 0
i32.store
loop $for-loop|0
@@ -852,7 +970,7 @@
local.get $1
i32.const 2
i32.shl
- i32.const 17920
+ i32.const 18640
i32.add
i32.const 0
i32.store offset=4
@@ -870,7 +988,7 @@
i32.add
i32.const 2
i32.shl
- i32.const 17920
+ i32.const 18640
i32.add
i32.const 0
i32.store offset=96
@@ -888,13 +1006,13 @@
br $for-loop|0
end
end
- i32.const 17920
- i32.const 19492
+ i32.const 18640
+ i32.const 20212
memory.size
i32.const 16
i32.shl
call $~lib/rt/tlsf/addMemory
- i32.const 17920
+ i32.const 18640
global.set $~lib/rt/tlsf/ROOT
)
(func $~lib/rt/itcms/step (result i32)
@@ -973,7 +1091,7 @@
local.set $0
loop $while-continue|0
local.get $0
- i32.const 17908
+ i32.const 18636
i32.lt_u
if
local.get $0
@@ -1056,14 +1174,14 @@
i32.ne
if
i32.const 0
- i32.const 1168
+ i32.const 1056
i32.const 228
i32.const 20
call $~lib/builtins/abort
unreachable
end
local.get $0
- i32.const 17908
+ i32.const 18636
i32.lt_u
if
local.get $0
@@ -1086,7 +1204,7 @@
i32.const 4
i32.add
local.tee $1
- i32.const 17908
+ i32.const 18636
i32.ge_u
if
global.get $~lib/rt/tlsf/ROOT
@@ -1118,7 +1236,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 565
i32.const 3
call $~lib/builtins/abort
@@ -1151,30 +1269,102 @@
end
global.get $~lib/rt/itcms/visitCount
)
- (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32)
- (local $1 i32)
+ (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
- local.get $0
- i32.load offset=4
- i32.const -2
- i32.and
- local.tee $2
- if (result i32)
- local.get $0
- local.get $2
- i32.ctz
- i32.const 2
+ local.get $1
+ i32.const 256
+ i32.lt_u
+ if
+ local.get $1
+ i32.const 4
+ i32.shr_u
+ local.set $1
+ else
+ i32.const 31
+ local.get $1
+ i32.const 1
+ i32.const 27
+ local.get $1
+ i32.clz
+ i32.sub
i32.shl
i32.add
- i32.load offset=96
- else
- local.get $0
- i32.load
- i32.const -2
- i32.and
+ i32.const 1
+ i32.sub
+ local.get $1
+ local.get $1
+ i32.const 536870910
+ i32.lt_u
+ select
local.tee $1
- if (result i32)
- local.get $0
+ i32.clz
+ i32.sub
+ local.set $2
+ local.get $1
+ local.get $2
+ i32.const 4
+ i32.sub
+ i32.shr_u
+ i32.const 16
+ i32.xor
+ local.set $1
+ local.get $2
+ i32.const 7
+ i32.sub
+ local.set $2
+ end
+ local.get $1
+ i32.const 16
+ i32.lt_u
+ i32.const 0
+ local.get $2
+ i32.const 23
+ i32.lt_u
+ select
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 1392
+ i32.const 334
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.get $2
+ i32.const 2
+ i32.shl
+ i32.add
+ i32.load offset=4
+ i32.const -1
+ local.get $1
+ i32.shl
+ i32.and
+ local.tee $1
+ if (result i32)
+ local.get $0
+ local.get $1
+ i32.ctz
+ local.get $2
+ i32.const 4
+ i32.shl
+ i32.add
+ i32.const 2
+ i32.shl
+ i32.add
+ i32.load offset=96
+ else
+ local.get $0
+ i32.load
+ i32.const -1
+ local.get $2
+ i32.const 1
+ i32.add
+ i32.shl
+ i32.and
+ local.tee $1
+ if (result i32)
+ local.get $0
local.get $1
i32.ctz
local.tee $1
@@ -1186,7 +1376,7 @@
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 347
i32.const 18
call $~lib/builtins/abort
@@ -1208,18 +1398,42 @@
end
end
)
- (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32)
- (local $1 i32)
+ (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
+ (local $4 i32)
+ local.get $1
+ i32.const 1073741820
+ i32.ge_u
+ if
+ i32.const 1264
+ i32.const 1392
+ i32.const 462
+ i32.const 30
+ call $~lib/builtins/abort
+ unreachable
+ end
local.get $0
+ i32.const 12
+ local.get $1
+ i32.const 19
+ i32.add
+ i32.const -16
+ i32.and
+ i32.const 4
+ i32.sub
+ local.get $1
+ i32.const 12
+ i32.le_u
+ select
+ local.tee $2
call $~lib/rt/tlsf/searchBlock
local.tee $1
i32.eqz
if
i32.const 4
memory.size
- local.tee $2
+ local.tee $1
i32.const 16
i32.shl
i32.const 4
@@ -1228,24 +1442,40 @@
i32.load offset=1568
i32.ne
i32.shl
- i32.const 65563
+ local.get $2
+ i32.const 1
+ i32.const 27
+ local.get $2
+ i32.clz
+ i32.sub
+ i32.shl
+ i32.const 1
+ i32.sub
+ i32.add
+ local.get $2
+ local.get $2
+ i32.const 536870910
+ i32.lt_u
+ select
+ i32.add
+ i32.const 65535
i32.add
i32.const -65536
i32.and
i32.const 16
i32.shr_u
- local.set $1
- local.get $2
+ local.set $3
local.get $1
+ local.get $3
local.get $1
- local.get $2
- i32.lt_s
+ local.get $3
+ i32.gt_s
select
memory.grow
i32.const 0
i32.lt_s
if
- local.get $1
+ local.get $3
memory.grow
i32.const 0
i32.lt_s
@@ -1254,7 +1484,7 @@
end
end
local.get $0
- local.get $2
+ local.get $1
i32.const 16
i32.shl
memory.size
@@ -1262,27 +1492,28 @@
i32.shl
call $~lib/rt/tlsf/addMemory
local.get $0
+ local.get $2
call $~lib/rt/tlsf/searchBlock
local.tee $1
i32.eqz
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 500
i32.const 16
call $~lib/builtins/abort
unreachable
end
end
+ local.get $2
local.get $1
i32.load
i32.const -4
i32.and
- i32.const 28
- i32.lt_u
+ i32.gt_u
if
i32.const 0
- i32.const 1440
+ i32.const 1392
i32.const 502
i32.const 14
call $~lib/builtins/abort
@@ -1293,27 +1524,43 @@
call $~lib/rt/tlsf/removeBlock
local.get $1
i32.load
- local.tee $2
+ local.set $3
+ local.get $2
+ i32.const 4
+ i32.add
+ i32.const 15
+ i32.and
+ if
+ i32.const 0
+ i32.const 1392
+ i32.const 361
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $3
i32.const -4
i32.and
- i32.const 28
+ local.get $2
i32.sub
- local.tee $3
+ local.tee $4
i32.const 16
i32.ge_u
if
local.get $1
local.get $2
+ local.get $3
i32.const 2
i32.and
- i32.const 28
i32.or
i32.store
+ local.get $2
local.get $1
- i32.const 32
+ i32.const 4
+ i32.add
i32.add
local.tee $2
- local.get $3
+ local.get $4
i32.const 4
i32.sub
i32.const 1
@@ -1324,7 +1571,7 @@
call $~lib/rt/tlsf/insertBlock
else
local.get $1
- local.get $2
+ local.get $3
i32.const -2
i32.and
i32.store
@@ -1350,23 +1597,192 @@
end
local.get $1
)
- (func $~lib/rt/itcms/__new (result i32)
- (local $0 i32)
- global.get $~lib/rt/itcms/total
- global.get $~lib/rt/itcms/threshold
- i32.ge_u
- if
- block $__inlined_func$~lib/rt/itcms/interrupt
- i32.const 2048
- local.set $0
- loop $do-continue|0
+ (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ block $~lib/util/memory/memset|inlined.0
+ local.get $1
+ i32.eqz
+ br_if $~lib/util/memory/memset|inlined.0
+ local.get $0
+ i32.const 0
+ i32.store8
+ local.get $0
+ local.get $1
+ i32.add
+ i32.const 4
+ i32.sub
+ local.tee $2
+ i32.const 0
+ i32.store8 offset=3
+ local.get $1
+ i32.const 2
+ i32.le_u
+ br_if $~lib/util/memory/memset|inlined.0
+ local.get $0
+ i32.const 0
+ i32.store8 offset=1
+ local.get $0
+ i32.const 0
+ i32.store8 offset=2
+ local.get $2
+ i32.const 0
+ i32.store8 offset=2
+ local.get $2
+ i32.const 0
+ i32.store8 offset=1
+ local.get $1
+ i32.const 6
+ i32.le_u
+ br_if $~lib/util/memory/memset|inlined.0
+ local.get $0
+ i32.const 0
+ i32.store8 offset=3
+ local.get $2
+ i32.const 0
+ i32.store8
+ local.get $1
+ i32.const 8
+ i32.le_u
+ br_if $~lib/util/memory/memset|inlined.0
+ local.get $0
+ i32.const 0
+ local.get $0
+ i32.sub
+ i32.const 3
+ i32.and
+ local.tee $2
+ i32.add
+ local.tee $0
+ i32.const 0
+ i32.store
+ local.get $0
+ local.get $1
+ local.get $2
+ i32.sub
+ i32.const -4
+ i32.and
+ local.tee $2
+ i32.add
+ i32.const 28
+ i32.sub
+ local.tee $1
+ i32.const 0
+ i32.store offset=24
+ local.get $2
+ i32.const 8
+ i32.le_u
+ br_if $~lib/util/memory/memset|inlined.0
+ local.get $0
+ i32.const 0
+ i32.store offset=4
+ local.get $0
+ i32.const 0
+ i32.store offset=8
+ local.get $1
+ i32.const 0
+ i32.store offset=16
+ local.get $1
+ i32.const 0
+ i32.store offset=20
+ local.get $2
+ i32.const 24
+ i32.le_u
+ br_if $~lib/util/memory/memset|inlined.0
+ local.get $0
+ i32.const 0
+ i32.store offset=12
+ local.get $0
+ i32.const 0
+ i32.store offset=16
+ local.get $0
+ i32.const 0
+ i32.store offset=20
+ local.get $0
+ i32.const 0
+ i32.store offset=24
+ local.get $1
+ i32.const 0
+ i32.store
+ local.get $1
+ i32.const 0
+ i32.store offset=4
+ local.get $1
+ i32.const 0
+ i32.store offset=8
+ local.get $1
+ i32.const 0
+ i32.store offset=12
+ local.get $0
+ local.get $0
+ i32.const 4
+ i32.and
+ i32.const 24
+ i32.add
+ local.tee $1
+ i32.add
+ local.set $0
+ local.get $2
+ local.get $1
+ i32.sub
+ local.set $1
+ loop $while-continue|0
+ local.get $1
+ i32.const 32
+ i32.ge_u
+ if
local.get $0
- call $~lib/rt/itcms/step
+ i64.const 0
+ i64.store
+ local.get $0
+ i64.const 0
+ i64.store offset=8
+ local.get $0
+ i64.const 0
+ i64.store offset=16
+ local.get $0
+ i64.const 0
+ i64.store offset=24
+ local.get $1
+ i32.const 32
i32.sub
+ local.set $1
+ local.get $0
+ i32.const 32
+ i32.add
local.set $0
- global.get $~lib/rt/itcms/state
- i32.eqz
- if
+ br $while-continue|0
+ end
+ end
+ end
+ )
+ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ local.get $0
+ i32.const 1073741804
+ i32.ge_u
+ if
+ i32.const 1264
+ i32.const 1056
+ i32.const 260
+ i32.const 31
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/rt/itcms/total
+ global.get $~lib/rt/itcms/threshold
+ i32.ge_u
+ if
+ block $__inlined_func$~lib/rt/itcms/interrupt
+ i32.const 2048
+ local.set $2
+ loop $do-continue|0
+ local.get $2
+ call $~lib/rt/itcms/step
+ i32.sub
+ local.set $2
+ global.get $~lib/rt/itcms/state
+ i32.eqz
+ if
global.get $~lib/rt/itcms/total
i64.extend_i32_u
i64.const 200
@@ -1379,7 +1795,7 @@
global.set $~lib/rt/itcms/threshold
br $__inlined_func$~lib/rt/itcms/interrupt
end
- local.get $0
+ local.get $2
i32.const 0
i32.gt_s
br_if $do-continue|0
@@ -1396,25 +1812,30 @@
global.set $~lib/rt/itcms/threshold
end
end
+ local.get $0
+ i32.const 16
+ i32.add
+ local.set $2
global.get $~lib/rt/tlsf/ROOT
i32.eqz
if
call $~lib/rt/tlsf/initialize
end
global.get $~lib/rt/tlsf/ROOT
+ local.get $2
call $~lib/rt/tlsf/allocateBlock
- local.tee $0
- i32.const 3
+ local.tee $2
+ local.get $1
i32.store offset=12
+ local.get $2
local.get $0
- i32.const 8
i32.store offset=16
- local.get $0
+ local.get $2
global.get $~lib/rt/itcms/fromSpace
global.get $~lib/rt/itcms/white
call $~lib/rt/itcms/Object#linkTo
global.get $~lib/rt/itcms/total
- local.get $0
+ local.get $2
i32.load
i32.const -4
i32.and
@@ -1422,55 +1843,322 @@
i32.add
i32.add
global.set $~lib/rt/itcms/total
- local.get $0
+ local.get $2
i32.const 20
i32.add
- local.tee $0
- i32.const 0
- i32.store8
+ local.tee $1
local.get $0
- i32.const 4
- i32.add
- i32.const 0
- i32.store8 offset=3
+ call $~lib/memory/memory.fill
+ local.get $1
+ )
+ (func $~lib/date/Date#set:timeZone (param $0 i32) (param $1 i32)
local.get $0
- i32.const 0
- i32.store8 offset=1
+ local.get $1
+ i32.store offset=8
local.get $0
- i32.const 0
- i32.store8 offset=2
+ local.get $1
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/date/Date#set:localDate (param $0 i32) (param $1 i32)
local.get $0
- i32.const 0
- i32.store8 offset=6
+ local.get $1
+ i32.store offset=12
local.get $0
- i32.const 0
- i32.store8 offset=5
+ local.get $1
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/date/Date#set:utcDate (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=16
+ local.get $0
+ local.get $1
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/util/date/CalendarUtils.floorDivide (param $0 i32) (param $1 i32) (result i32)
local.get $0
i32.const 0
- i32.store8 offset=3
+ i32.ge_s
+ if (result i32)
+ local.get $0
+ local.get $1
+ i32.div_s
+ else
+ local.get $0
+ i32.const 1
+ i32.add
+ local.get $1
+ i32.div_s
+ i32.const 1
+ i32.sub
+ end
+ )
+ (func $~lib/util/date/CalendarUtils.mod (param $0 i32) (param $1 i32) (result i32)
+ local.get $0
+ local.get $0
+ local.get $1
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.get $1
+ i32.mul
+ i32.sub
+ )
+ (func $~lib/util/date/CalendarUtils.getYearFromFixedDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
local.get $0
i32.const 0
- i32.store8 offset=4
+ i32.gt_s
+ if (result i32)
+ local.get $0
+ i32.const 1
+ i32.sub
+ local.tee $0
+ i32.const 146097
+ i32.div_s
+ local.set $2
+ local.get $0
+ i32.const 146097
+ i32.rem_s
+ local.tee $1
+ i32.const 36524
+ i32.div_s
+ local.set $0
+ local.get $1
+ i32.const 36524
+ i32.rem_s
+ local.tee $1
+ i32.const 1461
+ i32.div_s
+ local.set $3
+ local.get $1
+ i32.const 1461
+ i32.rem_s
+ i32.const 365
+ i32.div_s
+ else
+ local.get $0
+ i32.const 1
+ i32.sub
+ local.tee $0
+ i32.const 146097
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $2
+ local.get $0
+ i32.const 146097
+ call $~lib/util/date/CalendarUtils.mod
+ local.tee $1
+ i32.const 36524
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $0
+ local.get $1
+ i32.const 36524
+ call $~lib/util/date/CalendarUtils.mod
+ local.tee $1
+ i32.const 1461
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $3
+ local.get $1
+ i32.const 1461
+ call $~lib/util/date/CalendarUtils.mod
+ i32.const 365
+ call $~lib/util/date/CalendarUtils.floorDivide
+ end
+ local.tee $1
+ local.get $2
+ i32.const 400
+ i32.mul
+ local.get $0
+ i32.const 100
+ i32.mul
+ i32.add
+ local.get $3
+ i32.const 2
+ i32.shl
+ i32.add
+ i32.add
+ local.tee $2
+ local.get $2
+ i32.const 1
+ i32.add
+ i32.const 1
+ local.get $1
+ i32.const 4
+ i32.eq
+ local.get $0
+ i32.const 4
+ i32.eq
+ select
+ select
+ )
+ (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32)
+ local.get $1
+ local.get $0
+ i32.load offset=12
+ i32.ge_u
+ if
+ i32.const 1152
+ i32.const 2160
+ i32.const 92
+ i32.const 42
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ i32.load offset=4
+ local.get $1
+ i32.const 2
+ i32.shl
+ i32.add
+ i32.load
+ )
+ (func $~lib/util/date/CalendarDate#set:timeZone (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=56
+ local.get $0
+ local.get $1
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/util/date/setHours (param $0 i32)
+ local.get $0
+ i32.load offset=16
+ i32.const 24
+ i32.ne
+ if
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ i32.const 24
+ local.get $0
+ i32.load offset=16
+ i32.sub
+ i64.extend_i32_s
+ i64.const 3600000
+ i64.mul
+ i64.add
+ i64.store offset=40
+ local.get $0
+ i32.const 0
+ i32.store8 offset=32
+ end
+ )
+ (func $~lib/util/date/setMinutes (param $0 i32)
+ local.get $0
+ i32.load offset=20
+ i32.const 1495
+ i32.ne
+ if
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ i32.const 1495
+ local.get $0
+ i32.load offset=20
+ i32.sub
+ i64.extend_i32_s
+ i64.const 60000
+ i64.mul
+ i64.add
+ i64.store offset=40
+ local.get $0
+ i32.const 0
+ i32.store8 offset=32
+ end
+ )
+ (func $~lib/util/date/setSeconds (param $0 i32)
+ local.get $0
+ i32.load offset=24
+ i32.const 360
+ i32.ne
+ if
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ i32.const 360
+ local.get $0
+ i32.load offset=24
+ i32.sub
+ i64.extend_i32_s
+ i64.const 1000
+ i64.mul
+ i64.add
+ i64.store offset=40
+ local.get $0
+ i32.const 0
+ i32.store8 offset=32
+ end
+ )
+ (func $~lib/util/date/setMilliseconds (param $0 i32)
local.get $0
+ i32.load offset=28
+ i32.const 1001
+ i32.ne
+ if
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ i32.const 1001
+ local.get $0
+ i32.load offset=28
+ i32.sub
+ i64.extend_i32_s
+ i64.add
+ i64.store offset=40
+ local.get $0
+ i32.const 0
+ i32.store8 offset=32
+ end
)
(func $~lib/rt/__visit_members (param $0 i32)
- block $invalid
- block $~lib/date/Date
- block $~lib/arraybuffer/ArrayBufferView
- block $~lib/string/String
- block $~lib/arraybuffer/ArrayBuffer
- local.get $0
- i32.const 8
- i32.sub
- i32.load
- br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $invalid
+ (local $1 i32)
+ block $folding-inner0
+ block $invalid
+ block $~lib/util/date/CalendarDate
+ block $~lib/date/Date
+ block $~lib/array/Array
+ block $~lib/string/String
+ block $~lib/arraybuffer/ArrayBuffer
+ local.get $0
+ i32.const 8
+ i32.sub
+ i32.load
+ br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $~lib/array/Array $~lib/date/Date $~lib/util/date/CalendarDate $invalid
+ end
+ return
+ end
+ return
end
+ local.get $0
+ i32.load
+ call $~lib/rt/itcms/__visit
return
end
+ local.get $0
+ i32.load offset=8
+ local.tee $1
+ if
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ if
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ local.get $0
+ i32.load offset=16
+ local.tee $0
+ if
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
return
end
local.get $0
- i32.load
+ i32.load offset=56
local.tee $0
if
local.get $0
@@ -1478,155 +2166,2512 @@
end
return
end
- return
+ unreachable
+ end
+ local.get $0
+ i32.load
+ local.tee $0
+ if
+ local.get $0
+ call $~lib/rt/itcms/__visit
end
- unreachable
)
(func $~start
call $start:std/date
)
(func $~stack_check
global.get $~lib/memory/__stack_pointer
- i32.const 1524
+ i32.const 2252
i32.lt_s
if
- i32.const 17936
- i32.const 17984
+ i32.const 18656
+ i32.const 18704
i32.const 1
i32.const 1
call $~lib/builtins/abort
unreachable
end
)
- (func $start:std/date
- (local $0 i32)
- (local $1 i64)
+ (func $~lib/date/Date#constructor (param $0 i64) (result i32)
+ (local $1 i32)
global.get $~lib/memory/__stack_pointer
- i32.const 4
+ i32.const 8
i32.sub
global.set $~lib/memory/__stack_pointer
call $~stack_check
global.get $~lib/memory/__stack_pointer
- i32.const 0
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 20
+ i32.const 5
+ call $~lib/rt/itcms/__new
+ local.tee $1
i32.store
- i32.const 1970
- i32.const 0
- i32.const 1
+ local.get $1
+ i64.const 0
+ i64.store
+ local.get $1
i32.const 0
+ call $~lib/date/Date#set:timeZone
+ local.get $1
i32.const 0
+ call $~lib/date/Date#set:localDate
+ local.get $1
i32.const 0
- f64.const 0
- call $~lib/bindings/Date/UTC
+ call $~lib/date/Date#set:utcDate
+ local.get $1
+ local.get $0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 2016
+ i32.store offset=4
+ local.get $1
+ i32.const 2016
+ call $~lib/bindings/Date/getTimezoneOffset
+ call $~lib/util/date/TimeZone#constructor
+ call $~lib/date/Date#set:timeZone
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/util/date/CalendarUtils.getFixedDate (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local $3 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.const 2039
+ i32.le_s
+ i32.const 0
+ local.get $0
+ i32.const 1970
+ i32.ge_s
+ select
+ i32.const 0
+ local.get $1
+ i32.const 1
+ i32.eq
+ select
+ if
+ global.get $~lib/memory/__stack_pointer
+ i32.const 1920
+ i32.store
+ i32.const 1920
+ local.get $0
+ i32.const 1970
+ i32.sub
+ call $~lib/array/Array#__get
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ return
+ end
+ local.get $0
+ i32.const 1
+ i32.sub
+ local.tee $2
+ i32.const 0
+ i32.ge_s
+ if (result i32)
+ local.get $2
+ i32.const 4
+ i32.div_s
+ local.get $2
+ i32.const 100
+ i32.div_s
+ i32.sub
+ local.get $2
+ i32.const 400
+ i32.div_s
+ i32.add
+ else
+ local.get $2
+ i32.const 4
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.get $2
+ i32.const 100
+ call $~lib/util/date/CalendarUtils.floorDivide
+ i32.sub
+ local.get $2
+ i32.const 400
+ call $~lib/util/date/CalendarUtils.floorDivide
+ i32.add
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i32.const 365
+ i32.mul
+ i32.add
+ local.get $1
+ i32.const 367
+ i32.mul
+ i32.const 362
+ i32.sub
+ i32.const 12
+ i32.div_s
+ i32.add
+ i32.const 1
+ i32.add
+ local.tee $2
+ i32.const 1
+ i32.const 2
+ i32.const 0
+ i32.const 1
+ local.get $0
+ i32.const 15
+ i32.and
+ i32.eqz
+ local.get $0
+ i32.const 25
+ i32.rem_s
+ select
+ local.get $0
+ i32.const 3
+ i32.and
+ select
+ select
+ i32.sub
+ local.get $2
+ local.get $1
+ i32.const 2
+ i32.gt_s
+ select
+ )
+ (func $~lib/util/date/setCalendarDateFromFixedDate (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $1
+ local.get $1
+ call $~lib/util/date/CalendarUtils.getYearFromFixedDate
+ local.tee $4
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.tee $3
+ i32.sub
+ local.set $5
+ local.get $1
+ local.get $3
+ i32.const 59
+ i32.add
+ local.tee $2
+ i32.const 1
+ i32.add
+ local.get $2
+ i32.const 0
+ i32.const 1
+ local.get $4
+ i32.const 15
+ i32.and
+ i32.eqz
+ local.get $4
+ i32.const 25
+ i32.rem_s
+ select
+ local.get $4
+ i32.const 3
+ i32.and
+ select
+ local.tee $6
+ select
+ i32.ge_s
+ if (result i32)
+ local.get $5
+ i32.const 1
+ i32.const 2
+ local.get $6
+ select
+ i32.add
+ else
+ local.get $5
+ end
+ i32.const 12
+ i32.mul
+ i32.const 373
+ i32.add
+ local.tee $2
+ i32.const 0
+ i32.gt_s
+ if (result i32)
+ local.get $2
+ i32.const 367
+ i32.div_s
+ else
+ local.get $2
+ i32.const 367
+ call $~lib/util/date/CalendarUtils.floorDivide
+ end
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ i32.const 1568
+ i32.store
+ i32.const 1568
+ local.get $2
+ call $~lib/array/Array#__get
+ local.get $3
+ i32.add
+ local.set $3
+ local.get $1
+ i32.const 0
+ i32.ge_s
+ if (result i32)
+ local.get $1
+ i32.const 7
+ i32.rem_s
+ i32.const 1
+ i32.add
+ else
+ local.get $1
+ i32.const 7
+ call $~lib/util/date/CalendarUtils.mod
+ i32.const 1
+ i32.add
+ end
+ local.set $5
+ local.get $0
+ local.get $4
+ i32.store
+ local.get $0
+ local.get $2
+ i32.store offset=4
+ local.get $0
+ local.get $1
+ local.get $3
+ i32.const 1
+ i32.add
+ local.get $3
+ local.get $2
+ i32.const 3
+ i32.ge_s
+ i32.const 0
+ local.get $6
+ select
+ select
+ i32.sub
+ i32.const 1
+ i32.add
+ i32.store offset=8
+ local.get $0
+ local.get $5
+ i32.store offset=12
+ local.get $0
+ local.get $1
+ i32.store offset=52
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/util/date/getCalendarDate (param $0 i32) (param $1 i64) (result i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=56
+ local.tee $2
+ i32.store
+ local.get $2
+ if (result i32)
+ local.get $2
+ i32.load offset=4
+ else
+ i32.const 0
+ end
+ if (result i32)
+ local.get $1
+ local.get $2
+ i32.load offset=4
+ i64.extend_i32_s
+ local.tee $4
+ i64.add
+ i64.const 86400000
+ i64.div_s
+ i32.wrap_i64
+ local.set $3
+ local.get $1
+ local.get $4
+ i64.add
+ i64.const 86400000
+ i64.rem_s
+ i32.wrap_i64
+ else
+ local.get $1
+ i64.const 86400000
+ i64.div_s
+ i32.wrap_i64
+ local.set $3
+ local.get $1
+ i64.const 86400000
+ i64.rem_s
+ i32.wrap_i64
+ end
+ local.set $2
+ local.get $0
+ local.get $1
+ i64.store offset=40
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store offset=4
+ local.get $0
+ local.get $3
+ i32.const 719163
+ i32.add
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store offset=4
+ local.get $0
+ local.get $2
+ i32.const 3600000
+ i32.div_s
+ i32.store offset=16
+ local.get $0
+ local.get $2
+ i32.const 3600000
+ i32.rem_s
+ local.tee $3
+ i32.const 60000
+ i32.div_s
+ i32.store offset=20
+ local.get $0
+ local.get $3
+ i32.const 60000
+ i32.rem_s
+ local.tee $3
+ i32.const 1000
+ i32.div_s
+ i32.store offset=24
+ local.get $0
+ local.get $3
+ i32.const 1000
+ i32.rem_s
+ i32.store offset=28
+ local.get $0
+ local.get $2
+ i32.store offset=48
+ local.get $0
+ i32.const 1
+ i32.store8 offset=32
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $0
+ )
+ (func $~lib/date/Date#getUTCCalendarDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store offset=8
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.load offset=16
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 88
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $1
+ i64.load offset=40
+ local.get $0
+ i64.load
+ i64.eq
+ else
+ i32.const 0
+ end
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 89
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $1
+ i32.load8_u offset=32
+ else
+ i32.const 0
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $0
+ i32.store offset=4
+ local.get $0
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 70
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ else
+ local.get $0
+ i32.load offset=16
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 72
+ i32.const 30
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ local.set $0
+ else
+ local.get $0
+ i64.load
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ global.get $~lib/util/date/TimeZone.UTC_TIME_ZONE
+ local.tee $1
+ i32.store offset=8
+ global.get $~lib/memory/__stack_pointer
+ local.get $2
+ local.get $1
+ call $~lib/util/date/CalendarDate#constructor
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $0
+ local.get $1
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ call $~lib/date/Date#set:utcDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $0
+ i32.store offset=12
+ local.get $0
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 76
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ end
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $0
+ )
+ (func $std/date/test_utc_date (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 7
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=4
+ i32.const 1
+ i32.sub
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 8
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=8
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 9
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=12
+ i32.const 1
+ i32.sub
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 10
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=16
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $5
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 11
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=20
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $6
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 12
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=24
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $7
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 13
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=28
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $8
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 14
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $std/date/test_utc_millis (param $0 i64) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32)
+ (local $9 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#constructor
+ local.tee $9
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store offset=4
+ local.get $9
+ local.get $1
+ local.get $2
+ local.get $3
+ local.get $4
+ local.get $5
+ local.get $6
+ local.get $7
+ local.get $8
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/util/date/setFullYear (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $1
+ local.get $0
+ i32.load
+ i32.ne
+ if
+ local.get $0
+ i32.load
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.set $2
+ local.get $1
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.tee $1
+ local.get $0
+ i32.load offset=52
+ local.get $2
+ i32.sub
+ i32.add
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $3
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ i64.const 86400000
+ i64.mul
+ i64.add
+ i64.store offset=40
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $2
+ i32.store
+ local.get $2
+ local.get $1
+ call $~lib/util/date/setFullYear
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $2
+ i64.load offset=40
+ local.tee $3
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ )
+ (func $~lib/util/date/setMonth (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $1
+ local.get $0
+ i32.load offset=4
+ i32.ne
+ if
+ local.get $1
+ i32.const 12
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $2
+ local.get $1
+ i32.const 12
+ call $~lib/util/date/CalendarUtils.mod
+ local.set $1
+ local.get $0
+ i32.load offset=8
+ local.get $2
+ local.get $0
+ i32.load
+ i32.add
+ local.get $1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ i32.add
+ i32.const 1
+ i32.sub
+ local.set $1
+ local.get $0
+ i32.load offset=52
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ i64.const 86400000
+ i64.mul
+ i64.add
+ i64.store offset=40
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $2
+ i32.store
+ local.get $2
+ local.get $1
+ i32.const 1
+ i32.add
+ call $~lib/util/date/setMonth
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $2
+ i64.load offset=40
+ local.tee $3
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ )
+ (func $~lib/util/date/setDate (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $1
+ local.get $0
+ i32.load offset=8
+ i32.ne
+ if
+ local.get $1
+ local.get $0
+ i32.load offset=52
+ i32.add
+ local.get $0
+ i32.load offset=8
+ local.tee $2
+ i32.sub
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $3
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ i64.const 86400000
+ i64.mul
+ i64.add
+ i64.store offset=40
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#getLocalCalendarDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store offset=8
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.load offset=12
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 82
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $1
+ i64.load offset=40
+ local.get $0
+ i64.load
+ i64.eq
+ else
+ i32.const 0
+ end
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 83
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $1
+ i32.load8_u offset=32
+ else
+ i32.const 0
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $0
+ i32.store offset=4
+ local.get $0
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 58
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ else
+ local.get $0
+ i32.load offset=12
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 59
+ i32.const 43
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $1
+ i32.load8_u offset=32
+ i32.eqz
+ else
+ i32.const 0
+ end
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 60
+ i32.const 30
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ local.set $0
+ else
+ local.get $0
+ i64.load
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=8
+ local.tee $1
+ i32.store offset=8
+ global.get $~lib/memory/__stack_pointer
+ local.get $2
+ local.get $1
+ call $~lib/util/date/CalendarDate#constructor
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $0
+ local.get $1
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ call $~lib/date/Date#set:localDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $0
+ i32.store offset=12
+ local.get $0
+ i32.eqz
+ if
+ i32.const 2048
+ i32.const 2112
+ i32.const 64
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ end
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $0
+ )
+ (func $start:std/date
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ i32.const 1104
+ call $~lib/rt/itcms/initLazy
+ global.set $~lib/rt/itcms/toSpace
+ i32.const 1312
+ call $~lib/rt/itcms/initLazy
+ global.set $~lib/rt/itcms/pinSpace
+ i32.const 1344
+ call $~lib/rt/itcms/initLazy
+ global.set $~lib/rt/itcms/fromSpace
+ global.get $~lib/memory/__stack_pointer
+ i32.const 1456
+ i32.store
+ i32.const 1456
+ i32.const 0
+ call $~lib/util/date/TimeZone#constructor
+ global.set $~lib/util/date/TimeZone.UTC_TIME_ZONE
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ i64.eqz
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 17
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ i64.eqz
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 18
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 2018
+ i32.const 10
+ i32.const 10
+ i32.const 11
+ i32.const 0
+ i32.const 0
+ f64.const 1
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i64.const 1541847600001
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 21
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ call $~lib/bindings/Date/now
+ i64.trunc_f64_s
+ global.get $std/date/creationTime
+ i64.le_s
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 23
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/creationTime
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $std/date/creationTime
+ local.get $0
+ i64.load
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 26
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ global.get $std/date/creationTime
+ i64.const 1
+ i64.add
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i64.load
+ global.get $std/date/creationTime
+ i64.const 1
+ i64.add
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 28
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 2018
+ i32.const 10
+ i32.const 10
+ i32.const 11
+ i32.const 0
+ i32.const 0
+ f64.const 1
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 2018
+ i32.const 10
+ i32.const 10
+ i32.const 6
+ i32.const 11
+ i32.const 0
+ i32.const 0
+ i32.const 1
+ call $std/date/test_utc_millis
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 4
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_millis
+ i32.const 70
+ i32.const 0
+ i32.const 1
+ i32.const 11
+ i32.const 11
+ i32.const 22
+ f64.const 22
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 4
+ i32.const 11
+ i32.const 11
+ i32.const 22
+ i32.const 22
+ call $std/date/test_utc_millis
+ i32.const 0
+ i32.const 0
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 1900
+ i32.const 0
+ i32.const 1
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_millis
+ i32.const 2018
+ i32.const 12
+ i32.const 12
+ i32.const 12
+ i32.const 12
+ i32.const 61
+ f64.const 61
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 2019
+ i32.const 0
+ i32.const 12
+ i32.const 6
+ i32.const 12
+ i32.const 13
+ i32.const 1
+ i32.const 61
+ call $std/date/test_utc_millis
+ i32.const 2000
+ i32.const 1
+ i32.const 29
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 2000
+ call $~lib/date/Date#setUTCFullYear
+ global.set $std/date/millis
+ global.get $std/date/millis
+ i64.const 951782400000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 50
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 2000
+ i32.const 1
+ i32.const 29
+ i32.const 2
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1999
+ call $~lib/date/Date#setUTCFullYear
+ global.set $std/date/millis
+ global.get $std/date/millis
+ i64.const 920246400000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 53
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1999
+ i32.const 2
+ i32.const 1
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ call $~lib/date/Date#setUTCFullYear
+ global.set $std/date/millis
+ global.get $std/date/millis
+ i64.const 825552000000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 56
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ i32.const 1
+ i32.const 29
+ i32.const 4
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 13
+ call $~lib/date/Date#setUTCMonth
+ drop
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1997
+ i32.const 2
+ i32.const 1
+ i32.const 6
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i64.const 825552000000
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const -11
+ call $~lib/date/Date#setUTCMonth
+ i64.const 794016000000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 64
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1995
+ i32.const 2
+ i32.const 1
+ i32.const 3
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i32.const 1996
+ i32.const 1
+ i32.const 29
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ i32.const 30
+ call $~lib/util/date/setDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ local.tee $2
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i64.const 825638400000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 69
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i32.const 1996
+ i32.const 1
+ i32.const 29
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setHours
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ local.tee $2
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i64.const 825638400000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 74
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i32.const 1996
+ i32.const 1
+ i32.const 29
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
i64.trunc_f64_s
- i64.eqz
- i32.eqz
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setMinutes
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ local.tee $2
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i64.const 825641700000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 79
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 0
+ i32.const 55
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setSeconds
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ local.tee $2
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i64.const 825642060000
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 83
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 1
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setMilliseconds
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ local.tee $2
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ i64.const 825642061001
+ i64.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 87
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ local.get $0
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 1
+ i32.const 1
+ i32.const 1
+ i32.const 1
+ call $std/date/test_utc_date
+ i32.const 2000
+ i32.const 1
+ i32.const 29
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ i32.const 2000
+ call $~lib/util/date/setFullYear
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.const 2000
+ i32.ne
if
i32.const 0
- i32.const 1056
- i32.const 1
+ i32.const 1968
+ i32.const 94
i32.const 1
call $~lib/builtins/abort
unreachable
end
- i32.const 1970
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ i32.const 2
+ call $~lib/util/date/setMonth
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=4
i32.const 1
+ i32.sub
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.const 1
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 98
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ i32.const 8
+ call $~lib/util/date/setDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
i32.const 0
- i32.const 0
- i32.const 0
- f64.const 0
- call $~lib/bindings/Date/UTC
- i64.trunc_f64_s
- i64.eqz
- i32.eqz
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=8
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.ne
if
i32.const 0
- i32.const 1056
- i32.const 2
+ i32.const 1968
+ i32.const 102
i32.const 1
call $~lib/builtins/abort
unreachable
end
- i32.const 2018
- i32.const 10
- i32.const 10
- i32.const 11
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setHours
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=16
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 106
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setMinutes
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
i32.const 0
- f64.const 1
- call $~lib/bindings/Date/UTC
- i64.trunc_f64_s
- global.set $std/date/creationTime
- global.get $std/date/creationTime
- i64.const 1541847600001
- i64.ne
- if
- i32.const 0
- i32.const 1056
- i32.const 5
- i32.const 1
- call $~lib/builtins/abort
- unreachable
- end
- call $~lib/bindings/Date/now
- i64.trunc_f64_s
- global.get $std/date/creationTime
- i64.le_s
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=20
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.const 55
+ i32.ne
if
i32.const 0
- i32.const 1056
- i32.const 7
+ i32.const 1968
+ i32.const 110
i32.const 1
call $~lib/builtins/abort
unreachable
end
- i32.const 1216
- call $~lib/rt/itcms/initLazy
- global.set $~lib/rt/itcms/pinSpace
- i32.const 1248
- call $~lib/rt/itcms/initLazy
- global.set $~lib/rt/itcms/toSpace
- i32.const 1392
- call $~lib/rt/itcms/initLazy
- global.set $~lib/rt/itcms/fromSpace
- global.get $std/date/creationTime
- local.set $1
global.get $~lib/memory/__stack_pointer
- i32.const 4
+ global.get $std/date/date
+ local.tee $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
i32.sub
global.set $~lib/memory/__stack_pointer
call $~stack_check
global.get $~lib/memory/__stack_pointer
- i32.const 0
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
i32.store
global.get $~lib/memory/__stack_pointer
- call $~lib/rt/itcms/__new
- local.tee $0
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
i32.store
+ local.get $1
+ call $~lib/util/date/setSeconds
+ global.get $~lib/memory/__stack_pointer
local.get $0
- i64.const 0
- i64.store
+ i32.store
local.get $0
local.get $1
+ i64.load offset=40
i64.store
global.get $~lib/memory/__stack_pointer
- i32.const 4
+ i32.const 8
i32.add
global.set $~lib/memory/__stack_pointer
- local.get $0
- global.set $std/date/date
global.get $~lib/memory/__stack_pointer
global.get $std/date/date
local.tee $0
i32.store
- global.get $std/date/creationTime
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
local.get $0
- i64.load
- i64.ne
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=24
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
if
i32.const 0
- i32.const 1056
- i32.const 10
+ i32.const 1968
+ i32.const 114
i32.const 1
call $~lib/builtins/abort
unreachable
@@ -1635,25 +4680,100 @@
global.get $std/date/date
local.tee $0
i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
local.get $0
- global.get $std/date/creationTime
- i64.const 1
- i64.add
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/util/date/setMilliseconds
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.store
+ local.get $0
+ local.get $1
+ i64.load offset=40
i64.store
global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__stack_pointer
global.get $std/date/date
local.tee $0
i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
local.get $0
- i64.load
- global.get $std/date/creationTime
- i64.const 1
- i64.add
- i64.ne
+ i32.store
+ local.get $0
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=28
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ i32.const 1
+ i32.ne
if
i32.const 0
- i32.const 1056
- i32.const 12
+ i32.const 1968
+ i32.const 118
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ f64.const 0
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ call $~lib/date/Date#constructor
+ global.set $std/date/date1
+ call $~lib/bindings/Date/now
+ i64.trunc_f64_s
+ call $~lib/date/Date#constructor
+ global.set $std/date/date2
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date1
+ i32.store
+ call $~lib/bindings/Date/getTimezoneOffset
+ local.set $0
+ global.get $~lib/memory/__stack_pointer
+ global.get $std/date/date2
+ i32.store
+ call $~lib/bindings/Date/getTimezoneOffset
+ local.get $0
+ i32.ne
+ if
+ i32.const 0
+ i32.const 1968
+ i32.const 123
i32.const 1
call $~lib/builtins/abort
unreachable
@@ -1663,4 +4783,108 @@
i32.add
global.set $~lib/memory/__stack_pointer
)
+ (func $~lib/util/date/TimeZone#constructor (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.const 3
+ call $~lib/rt/itcms/__new
+ local.tee $2
+ i32.store
+ local.get $2
+ i32.const 0
+ call $~lib/util/date/TimeZone#set:ID
+ local.get $2
+ i32.const 0
+ i32.store offset=4
+ local.get $2
+ local.get $0
+ call $~lib/util/date/TimeZone#set:ID
+ local.get $2
+ local.get $1
+ i32.store offset=4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ )
+ (func $~lib/util/date/CalendarDate#constructor (param $0 i64) (param $1 i32) (result i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 60
+ i32.const 6
+ call $~lib/rt/itcms/__new
+ local.tee $2
+ i32.store
+ local.get $2
+ i32.const 0
+ i32.store
+ local.get $2
+ i32.const 0
+ i32.store offset=4
+ local.get $2
+ i32.const 0
+ i32.store offset=8
+ local.get $2
+ i32.const 0
+ i32.store offset=12
+ local.get $2
+ i32.const 0
+ i32.store offset=16
+ local.get $2
+ i32.const 0
+ i32.store offset=20
+ local.get $2
+ i32.const 0
+ i32.store offset=24
+ local.get $2
+ i32.const 0
+ i32.store offset=28
+ local.get $2
+ i32.const 0
+ i32.store8 offset=32
+ local.get $2
+ i64.const 0
+ i64.store offset=40
+ local.get $2
+ i32.const 0
+ i32.store offset=48
+ local.get $2
+ i32.const 0
+ i32.store offset=52
+ local.get $2
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:timeZone
+ local.get $2
+ local.get $0
+ i64.store offset=40
+ local.get $2
+ i32.const 0
+ i32.store8 offset=32
+ local.get $2
+ local.get $1
+ call $~lib/util/date/CalendarDate#set:timeZone
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ )
)
diff --git a/tests/compiler/std/date.ts b/tests/compiler/std/date.ts
index 87ba3a474d..72251a3d8c 100644
--- a/tests/compiler/std/date.ts
+++ b/tests/compiler/std/date.ts
@@ -1,3 +1,19 @@
+function test_utc_millis(millis: i64, year: i32, month: i32, dayOfMonth: i32, dayOfWeek: i32, hours: i32, minutes: i32, seconds: i32, milliseconds: i32) : void {
+ var date = new Date(millis);
+ test_utc_date(date, year, month, dayOfMonth, dayOfWeek, hours, minutes, seconds, milliseconds);
+}
+
+function test_utc_date(date: Date, year: i32, month: i32, dayOfMonth: i32, dayOfWeek: i32, hours: i32, minutes: i32, seconds: i32, milliseconds: i32) : void {
+ assert(date.getUTCFullYear() == year);
+ assert(date.getUTCMonth() == month);
+ assert(date.getUTCDate() == dayOfMonth);
+ assert(date.getUTCDay() == dayOfWeek);
+ assert(date.getUTCHours() == hours);
+ assert(date.getUTCMinutes() == minutes);
+ assert(date.getUTCSeconds() == seconds);
+ assert(date.getUTCMilliseconds() == milliseconds);
+}
+
assert(Date.UTC(1970, 0, 1) == 0);
assert(Date.UTC(1970, 0, 1, 0, 0, 0, 0) == 0);
@@ -10,3 +26,98 @@ var date = new Date(creationTime);
assert(date.getTime() == creationTime);
date.setTime(creationTime + 1);
assert(date.getTime() == creationTime + 1);
+
+// Test date get methods ////////////////////////////////////////////////////////////
+creationTime = Date.UTC(2018, 10, 10, 11, 0, 0, 1); // Sat, 10 Nov 2018 11:00:00 GMT
+test_utc_millis(creationTime, 2018, 10, 10, 6, 11, 0, 0, 1);
+creationTime = Date.UTC(1970, 0, 1, 0, 0, 0, 0); // Thu, 01 Jan 1970 00:00:00 GMT
+test_utc_millis(creationTime, 1970, 0, 1, 4, 0 , 0, 0, 0);
+creationTime = Date.UTC(70, 0, 1, 11, 11, 22, 22); // Thu, 01 Jan 1970 11:11:22 GMT
+test_utc_millis(creationTime, 1970, 0, 1, 4, 11, 11, 22, 22);
+creationTime = Date.UTC(0, 0, 1, 0, 0, 0, 0); // Mon, 01 Jan 1900 00:00:00 GMT
+test_utc_millis(creationTime, 1900, 0, 1, 1, 0, 0, 0, 0);
+creationTime = Date.UTC(2018, 12, 12, 12, 12, 61, 61); // Sat, 12 Jan 2019 12:13:01 GMT
+test_utc_millis(creationTime, 2019, 0, 12, 6, 12, 13, 1, 61);
+
+// Tset date set methods, setFullYear //////////////////////////////////////////////////////////
+var millis: i64 = 0;
+creationTime = Date.UTC(2000, 1, 29, 0, 0, 0, 0); // Tue, 29 Feb 2000 00:00:00 GMT, 951782400000
+date = new Date(creationTime);
+
+
+// Tset date set methods, setUTCFullYear //////////////////////////////////////////////////////////
+millis = date.setUTCFullYear(2000);
+assert(millis == 951782400000);
+test_utc_date(date, 2000, 1, 29, 2, 0, 0, 0, 0); // mills, 951782400000
+millis = date.setUTCFullYear(1999); // Mon, 01 Mar 1999 00:00:00 GMT, millis 920246400000
+assert(millis == 920246400000);
+test_utc_date(date, 1999, 2, 1, 1, 0, 0, 0, 0);
+millis = date.setUTCFullYear(1996); // Thu, 29 Feb 1996 00:00:00 GMT, millis 825552000000
+assert(millis == 825552000000);
+test_utc_date(date, 1996, 1, 29, 4, 0, 0, 0, 0);
+
+// Tset date set methods, setUTCMonth //////////////////////////////////////////////////////////
+date.setUTCMonth(13); // Sat, 01 Mar 1997 00:00:00 GMT, millis 857174400000
+test_utc_date(date, 1997, 2, 1, 6, 0, 0, 0, 0);
+
+date = new Date(825552000000);
+assert(date.setUTCMonth(-11) == 794016000000); // Wed, 01 Mar 1995 00:00:00 GMT, millis 794016000000
+test_utc_date(date, 1995, 2, 1, 3, 0, 0, 0, 0);
+
+// Tset date set methods, setUTCDate //////////////////////////////////////////////////////////
+date =new Date(Date.UTC(1996, 1, 29, 0, 0, 0, 0)); // Thu, 29 Feb 1996 00:00:00 GMT, 825552000000
+assert(date.setUTCDate(30) == 825638400000); // Fri, 01 Mar 1996 00:00:00 GMT, 825638400000
+test_utc_date(date, 1996, 2, 1, 5, 0, 0, 0, 0);
+
+// Tset date set methods, setUTCHours //////////////////////////////////////////////////////////
+date =new Date(Date.UTC(1996, 1, 29, 0, 0, 0, 0)); // Thu, 29 Feb 1996 00:00:00 GMT, 825552000000
+assert(date.setUTCHours(24) == 825638400000); // Fri, 01 Mar 1996 00:00:00 GMT, 825638400000
+test_utc_date(date, 1996, 2, 1, 5, 0, 0, 0, 0);
+
+// Tset date set methods, setUTCMinutes //////////////////////////////////////////////////////////
+date =new Date(Date.UTC(1996, 1, 29, 0, 0, 0, 0)); // Thu, 29 Feb 1996 00:00:00 GMT, 825552000000
+assert(date.setUTCMinutes(24 * 60 + 55) == 825641700000); // Fri, 01 Mar 1996 00:55:00 GMT, 825641700000
+test_utc_date(date, 1996, 2, 1, 5, 0, 55, 0, 0);
+
+// Tset date set methods, setUTCSeconds //////////////////////////////////////////////////////////
+assert(date.setUTCSeconds(6 * 60) == 825642060000); // Fri, 01 Mar 1996 01:01:00 GMT, 825642060000
+test_utc_date(date, 1996, 2, 1, 5, 1, 1, 0, 0);
+
+// Tset date set methods, setUTCMilliseconds //////////////////////////////////////////////////////////
+assert(date.setUTCMilliseconds(1001) == 825642061001); // Fri, 01 Mar 1996 01:01:01 GMT, 825642061001
+test_utc_date(date, 1996, 2, 1, 5, 1, 1, 1, 1);
+
+// Tset date set methods, setFullYear //////////////////////////////////////////////////////////
+creationTime = Date.UTC(2000, 1, 29, 0, 0, 0, 0); // Tue, 29 Feb 2000 00:00:00 GMT, 951782400000
+date = new Date(creationTime);
+date.setFullYear(2000);
+assert(date.getFullYear() == 2000);
+
+// Tset date set methods, setMonth //////////////////////////////////////////////////////////
+date.setMonth(1);
+assert(date.getMonth() == 1);
+
+// Tset date set methods, setDate //////////////////////////////////////////////////////////
+date.setDate(8);
+assert(date.getDate() == 8);
+
+// Tset date set methods, setHours //////////////////////////////////////////////////////////
+date.setHours(24);
+assert(date.getHours() == 0);
+
+// Tset date set methods, setMinutes //////////////////////////////////////////////////////////
+date.setMinutes(24 * 60 + 55);
+assert(date.getMinutes() == 55);
+
+// Tset date set methods, setSeconds //////////////////////////////////////////////////////////
+date.setSeconds(6 * 60);
+assert(date.getSeconds() == 0);
+
+// Tset date set methods, setMilliseconds //////////////////////////////////////////////////////////
+date.setMilliseconds(1001);
+assert(date.getMilliseconds() == 1);
+
+// Test date getTimezoneOffset method
+var date1 = new Date(Date.UTC(1970, 0, 1, 0, 0, 0, 0));
+var date2 = new Date(Date.now());
+assert(date1.getTimezoneOffset() == date2.getTimezoneOffset());
\ No newline at end of file
diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat
index 0a002819d3..851ee8234f 100644
--- a/tests/compiler/std/date.untouched.wat
+++ b/tests/compiler/std/date.untouched.wat
@@ -1,148 +1,124 @@
(module
(type $i32_i32_=>_none (func (param i32 i32)))
(type $i32_=>_i32 (func (param i32) (result i32)))
- (type $i32_=>_none (func (param i32)))
+ (type $i32_i32_=>_i64 (func (param i32 i32) (result i64)))
(type $none_=>_none (func))
- (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
+ (type $i32_=>_none (func (param i32)))
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
- (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32)))
+ (type $i32_i32_i32_=>_none (func (param i32 i32 i32)))
+ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32)))
(type $i32_i64_=>_none (func (param i32 i64)))
(type $none_=>_i32 (func (result i32)))
- (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32)))
(type $i32_i64_=>_i32 (func (param i32 i64) (result i32)))
+ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32)))
+ (type $i32_i32_i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32)))
+ (type $i64_i32_i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i64 i32 i32 i32 i32 i32 i32 i32 i32)))
+ (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32)))
(type $i32_=>_i64 (func (param i32) (result i64)))
(type $i32_i64_=>_i64 (func (param i32 i64) (result i64)))
(type $none_=>_f64 (func (result f64)))
(type $i32_i32_i32_i32_i32_i32_f64_=>_f64 (func (param i32 i32 i32 i32 i32 i32 f64) (result f64)))
- (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
+ (import "Date" "UTC" (func $~lib/bindings/Date/UTC (param i32 i32 i32 i32 i32 i32 f64) (result f64)))
(import "Date" "now" (func $~lib/bindings/Date/now (result f64)))
+ (import "Date" "getTimezoneOffset" (func $~lib/bindings/Date/getTimezoneOffset (result i32)))
(memory $0 1)
- (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00")
- (data (i32.const 60) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00")
- (data (i32.const 124) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00")
- (data (i32.const 192) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
- (data (i32.const 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
- (data (i32.const 252) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00")
- (data (i32.const 316) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00")
- (data (i32.const 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
- (data (i32.const 396) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
- (data (i32.const 464) "\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00")
+ (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 80) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 172) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 220) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00A\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00\00\00\00\00")
+ (data (i32.const 288) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00U\00T\00C\00\00\00\00\00\00\00")
+ (data (i32.const 444) "L\00\00\00\00\00\00\00\00\00\00\00\00\00\00\004\00\00\00\e2\ff\ff\ff\00\00\00\00\1f\00\00\00;\00\00\00Z\00\00\00x\00\00\00\97\00\00\00\b5\00\00\00\d4\00\00\00\f3\00\00\00\11\01\00\000\01\00\00N\01\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00\d0\01\00\00\d0\01\00\004\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 572) ",\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\01\00\00;\f9\n\00\a8\fa\n\00\15\fc\n\00\83\fd\n\00\f0\fe\n\00]\00\0b\00\ca\01\0b\008\03\0b\00\a5\04\0b\00\12\06\0b\00\7f\07\0b\00\ed\08\0b\00Z\n\0b\00\c7\0b\0b\004\0d\0b\00\a2\0e\0b\00\0f\10\0b\00|\11\0b\00\e9\12\0b\00W\14\0b\00\c4\15\0b\001\17\0b\00\9e\18\0b\00\0c\1a\0b\00y\1b\0b\00\e6\1c\0b\00S\1e\0b\00\c1\1f\0b\00.!\0b\00\9b\"\0b\00\08$\0b\00v%\0b\00\e3&\0b\00P(\0b\00\bd)\0b\00++\0b\00\98,\0b\00\05.\0b\00r/\0b\00\e00\0b\00M2\0b\00\ba3\0b\00\'5\0b\00\956\0b\00\028\0b\00o9\0b\00\dc:\0b\00J<\0b\00\b7=\0b\00$?\0b\00\91@\0b\00\ffA\0b\00lC\0b\00\d9D\0b\00FF\0b\00\b4G\0b\00!I\0b\00\8eJ\0b\00\fbK\0b\00iM\0b\00\d6N\0b\00CP\0b\00\b0Q\0b\00\1eS\0b\00\8bT\0b\00\f8U\0b\00eW\0b\00\d3X\0b\00@Z\0b\00\ad[\0b\00\00\00\00\00")
+ (data (i32.const 876) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00P\02\00\00P\02\00\00\18\01\00\00F\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00\00\00")
+ (data (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00G\00M\00T\00\00\00\00\00\00\00")
+ (data (i32.const 1004) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
+ (data (i32.const 1068) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00d\00a\00t\00e\00.\00t\00s\00\00\00\00\00")
+ (data (i32.const 1116) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00")
+ (data (i32.const 1168) "\07\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(table $0 1 funcref)
- (global $std/date/creationTime (mut i64) (i64.const 0))
+ (global $~lib/rt/itcms/white (mut i32) (i32.const 0))
+ (global $~lib/rt/itcms/iter (mut i32) (i32.const 0))
+ (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0))
+ (global $~lib/rt/itcms/state (mut i32) (i32.const 0))
(global $~lib/rt/itcms/total (mut i32) (i32.const 0))
(global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024))
- (global $~lib/rt/itcms/state (mut i32) (i32.const 0))
(global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0))
(global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0))
- (global $~lib/rt/itcms/iter (mut i32) (i32.const 0))
- (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0))
- (global $~lib/rt/itcms/white (mut i32) (i32.const 0))
(global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0))
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0))
(global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0))
(global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0))
+ (global $~lib/util/date/TimeZone.UTC_TIME_ZONE (mut i32) (i32.const 0))
+ (global $~lib/util/date/CalendarUtils.SECOND_IN_MILLIS (mut i32) (i32.const 1000))
+ (global $~lib/util/date/CalendarUtils.MINUTE_IN_MILLIS (mut i32) (i32.const 60000))
+ (global $~lib/util/date/CalendarUtils.HOUR_IN_MILLIS (mut i32) (i32.const 3600000))
+ (global $~lib/util/date/CalendarUtils.DAY_IN_MILLIS (mut i32) (i32.const 86400000))
+ (global $~lib/util/date/CalendarUtils.DAY_IN_HOURS (mut i32) (i32.const 24))
+ (global $~lib/util/date/CalendarUtils.YEAR_IN_MONTHS (mut i32) (i32.const 12))
+ (global $~lib/util/date/CalendarUtils.JANUARY (mut i32) (i32.const 1))
+ (global $~lib/util/date/CalendarUtils.FEBRUARY (mut i32) (i32.const 2))
+ (global $~lib/util/date/CalendarUtils.MARCH (mut i32) (i32.const 3))
+ (global $~lib/util/date/CalendarUtils.APRIL (mut i32) (i32.const 4))
+ (global $~lib/util/date/CalendarUtils.MAY (mut i32) (i32.const 5))
+ (global $~lib/util/date/CalendarUtils.JUNE (mut i32) (i32.const 6))
+ (global $~lib/util/date/CalendarUtils.JULY (mut i32) (i32.const 7))
+ (global $~lib/util/date/CalendarUtils.AUGUST (mut i32) (i32.const 8))
+ (global $~lib/util/date/CalendarUtils.SEPTEMBER (mut i32) (i32.const 9))
+ (global $~lib/util/date/CalendarUtils.OCTOBER (mut i32) (i32.const 10))
+ (global $~lib/util/date/CalendarUtils.NOVEMBER (mut i32) (i32.const 11))
+ (global $~lib/util/date/CalendarUtils.DECEMBER (mut i32) (i32.const 12))
+ (global $~lib/util/date/CalendarUtils.BASE_YEAR (mut i32) (i32.const 1970))
+ (global $~lib/util/date/CalendarUtils.SUNDAY (mut i32) (i32.const 1))
+ (global $~lib/util/date/CalendarUtils.MONDAY (mut i32) (i32.const 2))
+ (global $~lib/util/date/CalendarUtils.TUESDAY (mut i32) (i32.const 3))
+ (global $~lib/util/date/CalendarUtils.WEDNESDAY (mut i32) (i32.const 4))
+ (global $~lib/util/date/CalendarUtils.THURSDAY (mut i32) (i32.const 5))
+ (global $~lib/util/date/CalendarUtils.FRIDAY (mut i32) (i32.const 6))
+ (global $~lib/util/date/CalendarUtils.SATURDAY (mut i32) (i32.const 7))
+ (global $~lib/util/date/CalendarUtils.ACCUMULATED_DAYS_IN_MONTH (mut i32) (i32.const 544))
+ (global $~lib/util/date/CalendarUtils.FIXED_DATES (mut i32) (i32.const 896))
+ (global $~lib/util/date/CalendarUtils.EPOCH_OFFSET (mut i32) (i32.const 719163))
+ (global $std/date/creationTime (mut i64) (i64.const 0))
(global $std/date/date (mut i32) (i32.const 0))
- (global $~lib/rt/__rtti_base i32 (i32.const 464))
- (global $~lib/memory/__data_end i32 (i32.const 500))
- (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16884))
- (global $~lib/memory/__heap_base i32 (i32.const 16884))
+ (global $std/date/millis (mut i64) (i64.const 0))
+ (global $std/date/date1 (mut i32) (i32.const 0))
+ (global $std/date/date2 (mut i32) (i32.const 0))
+ (global $~lib/rt/__rtti_base i32 (i32.const 1168))
+ (global $~lib/memory/__data_end i32 (i32.const 1228))
+ (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17612))
+ (global $~lib/memory/__heap_base i32 (i32.const 17612))
(export "memory" (memory $0))
(start $~start)
- (func $~lib/date/Date#set:value (param $0 i32) (param $1 i64)
- local.get $0
- local.get $1
- i64.store
- )
- (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32)
- local.get $0
- local.get $1
- i32.store offset=4
- )
- (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32)
- local.get $0
- local.get $1
- i32.store offset=8
- )
- (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32)
- local.get $0
- local.get $0
- call $~lib/rt/itcms/Object#set:nextWithColor
- local.get $0
- local.get $0
- call $~lib/rt/itcms/Object#set:prev
- local.get $0
- )
- (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32)
+ (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32)
local.get $0
i32.load offset=4
i32.const 3
- i32.const -1
- i32.xor
i32.and
)
- (func $~lib/rt/itcms/Object#get:color (param $0 i32) (result i32)
+ (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32)
local.get $0
i32.load offset=4
i32.const 3
+ i32.const -1
+ i32.xor
i32.and
)
- (func $~lib/rt/itcms/visitRoots (param $0 i32)
- (local $1 i32)
- (local $2 i32)
- (local $3 i32)
+ (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32)
local.get $0
- call $~lib/rt/__visit_globals
- global.get $~lib/rt/itcms/pinSpace
- local.set $1
local.get $1
- call $~lib/rt/itcms/Object#get:next
- local.set $2
- loop $while-continue|0
- local.get $2
- local.get $1
- i32.ne
- local.set $3
- local.get $3
- if
- i32.const 1
- drop
- local.get $2
- call $~lib/rt/itcms/Object#get:color
- i32.const 3
- i32.eq
- i32.eqz
- if
- i32.const 0
- i32.const 144
- i32.const 159
- i32.const 16
- call $~lib/builtins/abort
- unreachable
- end
- local.get $2
- i32.const 20
- i32.add
- local.get $0
- call $~lib/rt/__visit_members
- local.get $2
- call $~lib/rt/itcms/Object#get:next
- local.set $2
- br $while-continue|0
- end
- end
+ i32.store offset=8
)
- (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32)
- local.get $0
+ (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32)
local.get $0
- i32.load offset=4
- i32.const 3
- i32.const -1
- i32.xor
- i32.and
local.get $1
- i32.or
- call $~lib/rt/itcms/Object#set:nextWithColor
+ i32.store offset=4
)
(func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32)
local.get $0
@@ -180,7 +156,7 @@
i32.eqz
if
i32.const 0
- i32.const 144
+ i32.const 32
i32.const 127
i32.const 18
call $~lib/builtins/abort
@@ -197,7 +173,7 @@
i32.eqz
if
i32.const 0
- i32.const 144
+ i32.const 32
i32.const 131
i32.const 16
call $~lib/builtins/abort
@@ -210,6 +186,15 @@
local.get $1
call $~lib/rt/itcms/Object#set:next
)
+ (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32)
+ local.get $0
+ local.get $0
+ call $~lib/rt/itcms/Object#set:nextWithColor
+ local.get $0
+ local.get $0
+ call $~lib/rt/itcms/Object#set:prev
+ local.get $0
+ )
(func $~lib/rt/__typeinfo (param $0 i32) (result i32)
(local $1 i32)
global.get $~lib/rt/__rtti_base
@@ -219,8 +204,8 @@
i32.load
i32.gt_u
if
- i32.const 272
- i32.const 336
+ i32.const 128
+ i32.const 192
i32.const 22
i32.const 28
call $~lib/builtins/abort
@@ -286,7 +271,7 @@
i32.eqz
if (result i32)
i32.const 0
- i32.const 144
+ i32.const 32
i32.const 147
i32.const 30
call $~lib/builtins/abort
@@ -310,6 +295,145 @@
end
call $~lib/rt/itcms/Object#linkTo
)
+ (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ local.get $1
+ i32.eqz
+ if
+ return
+ end
+ i32.const 1
+ drop
+ local.get $0
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 32
+ i32.const 294
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $1
+ i32.const 20
+ i32.sub
+ local.set $3
+ local.get $3
+ call $~lib/rt/itcms/Object#get:color
+ global.get $~lib/rt/itcms/white
+ i32.eq
+ if
+ local.get $0
+ i32.const 20
+ i32.sub
+ local.set $4
+ local.get $4
+ call $~lib/rt/itcms/Object#get:color
+ local.set $5
+ local.get $5
+ global.get $~lib/rt/itcms/white
+ i32.eqz
+ i32.eq
+ if
+ local.get $2
+ if
+ local.get $4
+ call $~lib/rt/itcms/Object#makeGray
+ else
+ local.get $3
+ call $~lib/rt/itcms/Object#makeGray
+ end
+ else
+ local.get $5
+ i32.const 3
+ i32.eq
+ if (result i32)
+ global.get $~lib/rt/itcms/state
+ i32.const 1
+ i32.eq
+ else
+ i32.const 0
+ end
+ if
+ local.get $3
+ call $~lib/rt/itcms/Object#makeGray
+ end
+ end
+ end
+ )
+ (func $~lib/util/date/TimeZone#set:ID (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store
+ local.get $0
+ local.get $1
+ i32.const 0
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/util/date/TimeZone#set:rawOffset (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=4
+ )
+ (func $~lib/rt/itcms/visitRoots (param $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ local.get $0
+ call $~lib/rt/__visit_globals
+ global.get $~lib/rt/itcms/pinSpace
+ local.set $1
+ local.get $1
+ call $~lib/rt/itcms/Object#get:next
+ local.set $2
+ loop $while-continue|0
+ local.get $2
+ local.get $1
+ i32.ne
+ local.set $3
+ local.get $3
+ if
+ i32.const 1
+ drop
+ local.get $2
+ call $~lib/rt/itcms/Object#get:color
+ i32.const 3
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 32
+ i32.const 159
+ i32.const 16
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $2
+ i32.const 20
+ i32.add
+ local.get $0
+ call $~lib/rt/__visit_members
+ local.get $2
+ call $~lib/rt/itcms/Object#get:next
+ local.set $2
+ br $while-continue|0
+ end
+ end
+ )
+ (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $0
+ i32.load offset=4
+ i32.const 3
+ i32.const -1
+ i32.xor
+ i32.and
+ local.get $1
+ i32.or
+ call $~lib/rt/itcms/Object#set:nextWithColor
+ )
(func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32)
(local $2 i32)
local.get $0
@@ -412,7 +536,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 273
i32.const 14
call $~lib/builtins/abort
@@ -439,7 +563,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 275
i32.const 14
call $~lib/builtins/abort
@@ -493,7 +617,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 288
i32.const 14
call $~lib/builtins/abort
@@ -625,7 +749,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 201
i32.const 14
call $~lib/builtins/abort
@@ -642,7 +766,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 203
i32.const 14
call $~lib/builtins/abort
@@ -737,7 +861,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 224
i32.const 16
call $~lib/builtins/abort
@@ -802,7 +926,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 239
i32.const 14
call $~lib/builtins/abort
@@ -820,7 +944,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 240
i32.const 14
call $~lib/builtins/abort
@@ -879,7 +1003,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 256
i32.const 14
call $~lib/builtins/abort
@@ -984,7 +1108,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 381
i32.const 14
call $~lib/builtins/abort
@@ -1027,7 +1151,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 388
i32.const 16
call $~lib/builtins/abort
@@ -1060,7 +1184,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 401
i32.const 5
call $~lib/builtins/abort
@@ -1303,7 +1427,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 565
i32.const 3
call $~lib/builtins/abort
@@ -1525,7 +1649,7 @@
i32.eqz
if
i32.const 0
- i32.const 144
+ i32.const 32
i32.const 228
i32.const 20
call $~lib/builtins/abort
@@ -1633,8 +1757,8 @@
i32.const 1073741820
i32.ge_u
if
- i32.const 80
- i32.const 416
+ i32.const 240
+ i32.const 368
i32.const 462
i32.const 30
call $~lib/builtins/abort
@@ -1718,7 +1842,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 334
i32.const 14
call $~lib/builtins/abort
@@ -1783,7 +1907,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 347
i32.const 18
call $~lib/builtins/abort
@@ -1934,7 +2058,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 361
i32.const 14
call $~lib/builtins/abort
@@ -2043,7 +2167,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 500
i32.const 16
call $~lib/builtins/abort
@@ -2063,7 +2187,7 @@
i32.eqz
if
i32.const 0
- i32.const 416
+ i32.const 368
i32.const 502
i32.const 14
call $~lib/builtins/abort
@@ -2322,8 +2446,8 @@
i32.const 1073741804
i32.ge_u
if
- i32.const 80
- i32.const 144
+ i32.const 240
+ i32.const 32
i32.const 260
i32.const 31
call $~lib/builtins/abort
@@ -2367,141 +2491,3706 @@
call $~lib/memory/memory.fill
local.get $3
)
- (func $~lib/date/Date#getTime (param $0 i32) (result i64)
+ (func $start:~lib/date
+ call $start:~lib/util/date
+ )
+ (func $~lib/date/Date#set:value (param $0 i32) (param $1 i64)
local.get $0
- i64.load
+ local.get $1
+ i64.store
)
- (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64)
+ (func $~lib/date/Date#set:timeZone (param $0 i32) (param $1 i32)
local.get $0
local.get $1
- call $~lib/date/Date#set:value
+ i32.store offset=8
+ local.get $0
local.get $1
+ i32.const 0
+ call $~lib/rt/itcms/__link
)
- (func $~lib/rt/__visit_globals (param $0 i32)
- (local $1 i32)
- global.get $std/date/date
- local.tee $1
- if
+ (func $~lib/date/Date#set:localDate (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=12
+ local.get $0
+ local.get $1
+ i32.const 0
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/date/Date#set:utcDate (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=16
+ local.get $0
+ local.get $1
+ i32.const 0
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/date/Date#getTime (param $0 i32) (result i64)
+ local.get $0
+ i64.load
+ )
+ (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64)
+ local.get $0
+ local.get $1
+ call $~lib/date/Date#set:value
+ local.get $1
+ )
+ (func $~lib/util/date/CalendarDate#set:millis (param $0 i32) (param $1 i64)
+ local.get $0
+ local.get $1
+ i64.store offset=40
+ )
+ (func $~lib/util/date/CalendarUtils.floorDivide (param $0 i32) (param $1 i32) (result i32)
+ local.get $0
+ i32.const 0
+ i32.ge_s
+ if (result i32)
+ local.get $0
local.get $1
+ i32.div_s
+ else
local.get $0
- call $~lib/rt/itcms/__visit
+ i32.const 1
+ i32.add
+ local.get $1
+ i32.div_s
+ i32.const 1
+ i32.sub
end
- i32.const 272
+ )
+ (func $~lib/util/date/CalendarUtils.mod (param $0 i32) (param $1 i32) (result i32)
local.get $0
- call $~lib/rt/itcms/__visit
- i32.const 80
+ local.get $1
local.get $0
- call $~lib/rt/itcms/__visit
+ local.get $1
+ call $~lib/util/date/CalendarUtils.floorDivide
+ i32.mul
+ i32.sub
)
- (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32)
+ (func $~lib/util/date/CalendarUtils.getYearFromFixedDate (param $0 i32) (result i32)
+ (local $1 i32)
(local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
local.get $0
- i32.load
- local.tee $2
+ i32.const 0
+ i32.gt_s
if
+ local.get $0
+ i32.const 1
+ i32.sub
+ local.set $1
+ local.get $1
+ i32.const 146097
+ i32.div_s
+ local.set $5
+ local.get $1
+ i32.const 146097
+ i32.rem_s
+ local.set $2
+ local.get $2
+ i32.const 36524
+ i32.div_s
+ local.set $6
local.get $2
+ i32.const 36524
+ i32.rem_s
+ local.set $3
+ local.get $3
+ i32.const 1461
+ i32.div_s
+ local.set $7
+ local.get $3
+ i32.const 1461
+ i32.rem_s
+ local.set $4
+ local.get $4
+ i32.const 365
+ i32.div_s
+ local.set $8
+ else
+ local.get $0
+ i32.const 1
+ i32.sub
+ local.set $1
local.get $1
- call $~lib/rt/itcms/__visit
+ i32.const 146097
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $5
+ local.get $1
+ i32.const 146097
+ call $~lib/util/date/CalendarUtils.mod
+ local.set $2
+ local.get $2
+ i32.const 36524
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $6
+ local.get $2
+ i32.const 36524
+ call $~lib/util/date/CalendarUtils.mod
+ local.set $3
+ local.get $3
+ i32.const 1461
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $7
+ local.get $3
+ i32.const 1461
+ call $~lib/util/date/CalendarUtils.mod
+ local.set $4
+ local.get $4
+ i32.const 365
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $8
end
- )
- (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32)
- block $invalid
- block $~lib/date/Date
- block $~lib/arraybuffer/ArrayBufferView
- block $~lib/string/String
- block $~lib/arraybuffer/ArrayBuffer
- local.get $0
- i32.const 8
- i32.sub
- i32.load
- br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/date/Date $invalid
- end
- return
- end
- return
- end
- local.get $0
- local.get $1
- call $~lib/arraybuffer/ArrayBufferView~visit
- return
- end
- return
+ i32.const 400
+ local.get $5
+ i32.mul
+ i32.const 100
+ local.get $6
+ i32.mul
+ i32.add
+ i32.const 4
+ local.get $7
+ i32.mul
+ i32.add
+ local.get $8
+ i32.add
+ local.set $9
+ local.get $6
+ i32.const 4
+ i32.eq
+ if (result i32)
+ i32.const 1
+ else
+ local.get $8
+ i32.const 4
+ i32.eq
end
- unreachable
+ i32.eqz
+ if
+ local.get $9
+ i32.const 1
+ i32.add
+ local.set $9
+ end
+ local.get $9
)
- (func $~start
- call $start:std/date
+ (func $~lib/util/date/CalendarUtils.hitFixedDateYear (param $0 i32) (result i32)
+ local.get $0
+ i32.const 1970
+ i32.ge_s
+ if (result i32)
+ local.get $0
+ i32.const 2039
+ i32.le_s
+ else
+ i32.const 0
+ end
)
- (func $~stack_check
- global.get $~lib/memory/__stack_pointer
- global.get $~lib/memory/__data_end
- i32.lt_s
+ (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ local.get $1
+ local.get $0
+ i32.load offset=12
+ i32.ge_u
if
- i32.const 16912
- i32.const 16960
- i32.const 1
- i32.const 1
+ i32.const 128
+ i32.const 1136
+ i32.const 92
+ i32.const 42
call $~lib/builtins/abort
unreachable
end
+ local.get $0
+ i32.load offset=4
+ local.get $1
+ i32.const 2
+ i32.shl
+ i32.add
+ i32.load
+ local.set $2
+ i32.const 0
+ drop
+ local.get $2
+ )
+ (func $~lib/util/date/CalendarUtils.getDayOfWeekFromFixedDate (param $0 i32) (result i32)
+ local.get $0
+ i32.const 0
+ i32.ge_s
+ if
+ local.get $0
+ i32.const 7
+ i32.rem_s
+ global.get $~lib/util/date/CalendarUtils.SUNDAY
+ i32.add
+ return
+ end
+ local.get $0
+ i32.const 7
+ call $~lib/util/date/CalendarUtils.mod
+ global.get $~lib/util/date/CalendarUtils.SUNDAY
+ i32.add
)
- (func $start:std/date
- (local $0 i32)
- (local $1 i32)
+ (func $~lib/util/date/CalendarDate#set:year (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store
+ )
+ (func $~lib/util/date/CalendarDate#set:month (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=4
+ )
+ (func $~lib/util/date/CalendarDate#set:dayOfMonth (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=8
+ )
+ (func $~lib/util/date/CalendarDate#set:dayOfWeek (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=12
+ )
+ (func $~lib/util/date/CalendarDate#set:fixedDate (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=52
+ )
+ (func $~lib/util/date/CalendarDate#set:hours (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=16
+ )
+ (func $~lib/util/date/CalendarDate#set:minutes (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=20
+ )
+ (func $~lib/util/date/CalendarDate#set:seconds (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=24
+ )
+ (func $~lib/util/date/CalendarDate#set:milliseconds (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=28
+ )
+ (func $~lib/util/date/CalendarDate#set:timeOfDay (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=48
+ )
+ (func $~lib/util/date/setTimeOfDay (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
- (local $6 i64)
- (local $7 i32)
- global.get $~lib/memory/__stack_pointer
- i32.const 4
- i32.sub
- global.set $~lib/memory/__stack_pointer
- call $~stack_check
- global.get $~lib/memory/__stack_pointer
+ local.get $1
+ local.set $2
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.HOUR_IN_MILLIS
+ i32.div_s
+ local.set $3
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.HOUR_IN_MILLIS
+ i32.rem_s
+ local.set $2
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.MINUTE_IN_MILLIS
+ i32.div_s
+ local.set $4
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.MINUTE_IN_MILLIS
+ i32.rem_s
+ local.set $2
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.SECOND_IN_MILLIS
+ i32.div_s
+ local.set $5
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.SECOND_IN_MILLIS
+ i32.rem_s
+ local.set $2
+ local.get $0
+ local.get $3
+ call $~lib/util/date/CalendarDate#set:hours
+ local.get $0
+ local.get $4
+ call $~lib/util/date/CalendarDate#set:minutes
+ local.get $0
+ local.get $5
+ call $~lib/util/date/CalendarDate#set:seconds
+ local.get $0
+ local.get $2
+ call $~lib/util/date/CalendarDate#set:milliseconds
+ local.get $0
+ local.get $1
+ call $~lib/util/date/CalendarDate#set:timeOfDay
+ )
+ (func $~lib/util/date/CalendarDate#set:isNormalized (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store8 offset=32
+ )
+ (func $~lib/util/date/CalendarDate#set:timeZone (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ i32.store offset=56
+ local.get $0
+ local.get $1
+ i32.const 0
+ call $~lib/rt/itcms/__link
+ )
+ (func $~lib/util/date/setHours (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load offset=16
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load offset=16
+ local.set $2
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ global.get $~lib/util/date/CalendarUtils.HOUR_IN_MILLIS
+ i64.extend_i32_s
+ i64.mul
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ end
+ )
+ (func $~lib/util/date/setMinutes (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load offset=20
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load offset=20
+ local.set $2
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ global.get $~lib/util/date/CalendarUtils.MINUTE_IN_MILLIS
+ i64.extend_i32_s
+ i64.mul
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ end
+ )
+ (func $~lib/util/date/setSeconds (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load offset=24
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load offset=24
+ local.set $2
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ global.get $~lib/util/date/CalendarUtils.SECOND_IN_MILLIS
+ i64.extend_i32_s
+ i64.mul
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ end
+ )
+ (func $~lib/util/date/setMilliseconds (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load offset=28
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load offset=28
+ local.set $2
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ end
+ )
+ (func $~lib/date/Date#getTimezoneOffset (param $0 i32) (result i32)
+ call $~lib/bindings/Date/getTimezoneOffset
+ )
+ (func $~lib/rt/__visit_globals (param $0 i32)
+ (local $1 i32)
+ global.get $std/date/date
+ local.tee $1
+ if
+ local.get $1
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ global.get $std/date/date1
+ local.tee $1
+ if
+ local.get $1
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ global.get $std/date/date2
+ local.tee $1
+ if
+ local.get $1
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ i32.const 128
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ i32.const 240
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ global.get $~lib/util/date/TimeZone.UTC_TIME_ZONE
+ local.tee $1
+ if
+ local.get $1
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ global.get $~lib/util/date/CalendarUtils.ACCUMULATED_DAYS_IN_MONTH
+ local.tee $1
+ if
+ local.get $1
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ global.get $~lib/util/date/CalendarUtils.FIXED_DATES
+ local.tee $1
+ if
+ local.get $1
+ local.get $0
+ call $~lib/rt/itcms/__visit
+ end
+ )
+ (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load
+ local.tee $2
+ if
+ local.get $2
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ )
+ (func $~lib/util/date/TimeZone~visit (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load
+ local.tee $2
+ if
+ local.get $2
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ )
+ (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32)
+ i32.const 0
+ drop
+ local.get $0
+ i32.load
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ )
+ (func $~lib/array/Array~visit (param $0 i32) (param $1 i32)
+ local.get $0
+ local.get $1
+ call $~lib/array/Array#__visit
+ )
+ (func $~lib/date/Date~visit (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load offset=8
+ local.tee $2
+ if
+ local.get $2
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ local.get $0
+ i32.load offset=12
+ local.tee $2
+ if
+ local.get $2
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ local.get $0
+ i32.load offset=16
+ local.tee $2
+ if
+ local.get $2
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ )
+ (func $~lib/util/date/CalendarDate~visit (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ local.get $0
+ i32.load offset=56
+ local.tee $2
+ if
+ local.get $2
+ local.get $1
+ call $~lib/rt/itcms/__visit
+ end
+ )
+ (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32)
+ block $invalid
+ block $~lib/util/date/CalendarDate
+ block $~lib/date/Date
+ block $~lib/array/Array
+ block $~lib/util/date/TimeZone
+ block $~lib/arraybuffer/ArrayBufferView
+ block $~lib/string/String
+ block $~lib/arraybuffer/ArrayBuffer
+ local.get $0
+ i32.const 8
+ i32.sub
+ i32.load
+ br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/util/date/TimeZone $~lib/array/Array $~lib/date/Date $~lib/util/date/CalendarDate $invalid
+ end
+ return
+ end
+ return
+ end
+ local.get $0
+ local.get $1
+ call $~lib/arraybuffer/ArrayBufferView~visit
+ return
+ end
+ local.get $0
+ local.get $1
+ call $~lib/util/date/TimeZone~visit
+ return
+ end
+ local.get $0
+ local.get $1
+ call $~lib/array/Array~visit
+ return
+ end
+ local.get $0
+ local.get $1
+ call $~lib/date/Date~visit
+ return
+ end
+ local.get $0
+ local.get $1
+ call $~lib/util/date/CalendarDate~visit
+ return
+ end
+ unreachable
+ )
+ (func $~start
+ call $start:std/date
+ )
+ (func $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ global.get $~lib/memory/__data_end
+ i32.lt_s
+ if
+ i32.const 17632
+ i32.const 17680
+ i32.const 1
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ )
+ (func $start:~lib/util/date
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ i32.const 80
+ call $~lib/rt/itcms/initLazy
+ global.set $~lib/rt/itcms/toSpace
+ i32.const 288
+ call $~lib/rt/itcms/initLazy
+ global.set $~lib/rt/itcms/pinSpace
+ i32.const 320
+ call $~lib/rt/itcms/initLazy
+ global.set $~lib/rt/itcms/fromSpace
+ i32.const 0
+ i32.const 432
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ local.get $2
+ i32.store
+ local.get $2
+ i32.const 0
+ call $~lib/util/date/TimeZone#constructor
+ global.set $~lib/util/date/TimeZone.UTC_TIME_ZONE
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ local.get $0
+ i32.eqz
+ if
+ global.get $~lib/memory/__stack_pointer
+ i32.const 20
+ i32.const 5
+ call $~lib/rt/itcms/__new
+ local.tee $0
+ i32.store
+ end
+ local.get $0
+ i64.const 0
+ call $~lib/date/Date#set:value
+ local.get $0
+ i32.const 0
+ call $~lib/date/Date#set:timeZone
+ local.get $0
+ i32.const 0
+ call $~lib/date/Date#set:localDate
+ local.get $0
+ i32.const 0
+ call $~lib/date/Date#set:utcDate
+ local.get $0
+ local.get $1
+ call $~lib/date/Date#set:value
+ local.get $0
+ i32.const 0
+ i32.const 992
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ local.get $2
+ i32.store offset=4
+ local.get $2
+ call $~lib/bindings/Date/getTimezoneOffset
+ call $~lib/util/date/TimeZone#constructor
+ call $~lib/date/Date#set:timeZone
+ local.get $0
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ )
+ (func $~lib/util/date/CalendarUtils.getFixedDate (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.JANUARY
+ i32.eq
+ if (result i32)
+ local.get $2
+ i32.const 1
+ i32.eq
+ else
+ i32.const 0
+ end
+ local.set $3
+ local.get $3
+ if (result i32)
+ local.get $0
+ call $~lib/util/date/CalendarUtils.hitFixedDateYear
+ else
+ i32.const 0
+ end
+ if
+ global.get $~lib/util/date/CalendarUtils.FIXED_DATES
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ local.get $0
+ global.get $~lib/util/date/CalendarUtils.BASE_YEAR
+ i32.sub
+ call $~lib/array/Array#__get
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $7
+ return
+ end
+ local.get $0
+ i32.const 1
+ i32.sub
+ local.set $4
+ local.get $2
+ local.set $5
+ local.get $5
+ i32.const 365
+ local.get $4
+ i32.mul
+ block $~lib/util/date/CalendarUtils.countLeaps|inlined.0 (result i32)
+ local.get $4
+ local.set $6
+ local.get $6
+ i32.const 0
+ i32.ge_s
+ if
+ local.get $6
+ i32.const 4
+ i32.div_s
+ local.get $6
+ i32.const 100
+ i32.div_s
+ i32.sub
+ local.get $6
+ i32.const 400
+ i32.div_s
+ i32.add
+ br $~lib/util/date/CalendarUtils.countLeaps|inlined.0
+ else
+ local.get $6
+ i32.const 4
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.get $6
+ i32.const 100
+ call $~lib/util/date/CalendarUtils.floorDivide
+ i32.sub
+ local.get $6
+ i32.const 400
+ call $~lib/util/date/CalendarUtils.floorDivide
+ i32.add
+ br $~lib/util/date/CalendarUtils.countLeaps|inlined.0
+ end
+ unreachable
+ end
+ i32.add
+ i32.const 367
+ local.get $1
+ i32.mul
+ i32.const 362
+ i32.sub
+ i32.const 12
+ i32.div_s
+ i32.add
+ i32.add
+ local.set $5
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.FEBRUARY
+ i32.gt_s
+ if
+ local.get $5
+ local.get $0
+ local.set $6
+ local.get $6
+ i32.const 3
+ i32.and
+ i32.const 0
+ i32.eq
+ if (result i32)
+ local.get $6
+ i32.const 25
+ i32.rem_s
+ i32.const 0
+ i32.ne
+ if (result i32)
+ i32.const 1
+ else
+ local.get $6
+ i32.const 15
+ i32.and
+ i32.const 0
+ i32.eq
+ end
+ else
+ i32.const 0
+ end
+ if (result i32)
+ i32.const 1
+ else
+ i32.const 2
+ end
+ i32.sub
+ local.set $5
+ end
+ local.get $5
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $7
+ )
+ (func $~lib/util/date/setCalendarDateFromFixedDate (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (local $10 i32)
+ (local $11 i32)
+ (local $12 i32)
+ (local $13 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $1
+ call $~lib/util/date/CalendarUtils.getYearFromFixedDate
+ local.set $2
+ local.get $2
+ global.get $~lib/util/date/CalendarUtils.JANUARY
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.set $3
+ local.get $2
+ local.set $4
+ local.get $4
+ i32.const 3
+ i32.and
+ i32.const 0
+ i32.eq
+ if (result i32)
+ local.get $4
+ i32.const 25
+ i32.rem_s
+ i32.const 0
+ i32.ne
+ if (result i32)
+ i32.const 1
+ else
+ local.get $4
+ i32.const 15
+ i32.and
+ i32.const 0
+ i32.eq
+ end
+ else
+ i32.const 0
+ end
+ local.set $5
+ local.get $1
+ local.get $3
+ i32.sub
+ local.set $6
+ local.get $3
+ i32.const 31
+ i32.add
+ i32.const 28
+ i32.add
+ local.set $7
+ local.get $5
+ if
+ local.get $7
+ i32.const 1
+ i32.add
+ local.set $7
+ end
+ local.get $1
+ local.get $7
+ i32.ge_s
+ if
+ local.get $6
+ local.get $5
+ if (result i32)
+ i32.const 1
+ else
+ i32.const 2
+ end
+ i32.add
+ local.set $6
+ end
+ i32.const 12
+ local.get $6
+ i32.mul
+ i32.const 373
+ i32.add
+ local.set $8
+ local.get $8
+ i32.const 0
+ i32.gt_s
+ if
+ local.get $8
+ i32.const 367
+ i32.div_s
+ local.set $8
+ else
+ local.get $8
+ i32.const 367
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $8
+ end
+ global.get $~lib/util/date/CalendarUtils.ACCUMULATED_DAYS_IN_MONTH
+ local.set $13
+ global.get $~lib/memory/__stack_pointer
+ local.get $13
+ i32.store
+ local.get $13
+ local.get $8
+ call $~lib/array/Array#__get
+ local.set $9
+ local.get $3
+ local.get $9
+ i32.add
+ local.set $10
+ local.get $5
+ if (result i32)
+ local.get $8
+ global.get $~lib/util/date/CalendarUtils.MARCH
+ i32.ge_s
+ else
+ i32.const 0
+ end
+ if
+ local.get $10
+ i32.const 1
+ i32.add
+ local.set $10
+ end
+ local.get $1
+ local.get $10
+ i32.sub
+ i32.const 1
+ i32.add
+ local.set $11
+ local.get $1
+ call $~lib/util/date/CalendarUtils.getDayOfWeekFromFixedDate
+ local.set $12
+ local.get $0
+ local.get $2
+ call $~lib/util/date/CalendarDate#set:year
+ local.get $0
+ local.get $8
+ call $~lib/util/date/CalendarDate#set:month
+ local.get $0
+ local.get $11
+ call $~lib/util/date/CalendarDate#set:dayOfMonth
+ local.get $0
+ local.get $12
+ call $~lib/util/date/CalendarDate#set:dayOfWeek
+ local.get $0
+ local.get $1
+ call $~lib/util/date/CalendarDate#set:fixedDate
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/util/date/getCalendarDate (param $0 i32) (param $1 i64) (result i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i64)
+ (local $6 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=56
+ local.tee $4
+ i32.store
+ local.get $4
+ i32.const 0
+ i32.ne
+ if (result i32)
+ local.get $4
+ i32.load offset=4
+ i32.const 0
+ i32.ne
+ else
+ i32.const 0
+ end
+ if
+ local.get $4
+ i32.load offset=4
+ i64.extend_i32_s
+ local.set $5
+ local.get $3
+ local.get $1
+ local.get $5
+ i64.add
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.div_s
+ i32.wrap_i64
+ i32.add
+ local.set $3
+ local.get $2
+ local.get $1
+ local.get $5
+ i64.add
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.rem_s
+ i32.wrap_i64
+ i32.add
+ local.set $2
+ else
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.div_s
+ i32.wrap_i64
+ local.set $3
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.rem_s
+ i32.wrap_i64
+ local.set $2
+ end
+ local.get $3
+ global.get $~lib/util/date/CalendarUtils.EPOCH_OFFSET
+ i32.add
+ local.set $3
+ local.get $0
+ local.get $1
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ local.set $6
+ global.get $~lib/memory/__stack_pointer
+ local.get $6
+ i32.store offset=4
+ local.get $6
+ local.get $3
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.set $6
+ global.get $~lib/memory/__stack_pointer
+ local.get $6
+ i32.store offset=4
+ local.get $6
+ local.get $2
+ call $~lib/util/date/setTimeOfDay
+ local.get $0
+ i32.const 1
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ local.get $0
+ local.set $6
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $6
+ )
+ (func $~lib/date/Date#getUTCCalendarDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store offset=8
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#isNormalizeUTCDate
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 70
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ return
+ else
+ local.get $0
+ i32.load offset=16
+ i32.const 0
+ i32.ne
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 72
+ i32.const 30
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ return
+ else
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ local.get $0
+ i64.load
+ global.get $~lib/util/date/TimeZone.UTC_TIME_ZONE
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store offset=8
+ local.get $3
+ call $~lib/util/date/CalendarDate#constructor
+ local.tee $1
+ i32.store offset=4
+ local.get $0
+ local.get $1
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ call $~lib/date/Date#set:utcDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $2
+ i32.store offset=12
+ local.get $2
+ if (result i32)
+ local.get $2
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 76
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ return
+ end
+ unreachable
+ end
+ unreachable
+ )
+ (func $~lib/date/Date#getUTCFullYear (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCMonth (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=4
+ i32.const 1
+ i32.sub
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCDate (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=8
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCDay (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=12
+ i32.const 1
+ i32.sub
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCHours (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=16
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCMinutes (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=20
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCSeconds (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=24
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#getUTCMilliseconds (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getUTCCalendarDate
+ i32.load offset=28
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $std/date/test_utc_date (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32)
+ (local $9 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCFullYear
+ local.get $1
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 7
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCMonth
+ local.get $2
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 8
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCDate
+ local.get $3
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 9
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCDay
+ local.get $4
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 10
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCHours
+ local.get $5
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 11
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCMinutes
+ local.get $6
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 12
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCSeconds
+ local.get $7
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 13
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.get $0
+ local.set $9
+ global.get $~lib/memory/__stack_pointer
+ local.get $9
+ i32.store
+ local.get $9
+ call $~lib/date/Date#getUTCMilliseconds
+ local.get $8
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 14
+ i32.const 3
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $std/date/test_utc_millis (param $0 i64) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32)
+ (local $9 i32)
+ (local $10 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ local.get $0
+ call $~lib/date/Date#constructor
+ local.tee $9
+ i32.store
+ local.get $9
+ local.set $10
+ global.get $~lib/memory/__stack_pointer
+ local.get $10
+ i32.store offset=4
+ local.get $10
+ local.get $1
+ local.get $2
+ local.get $3
+ local.get $4
+ local.get $5
+ local.get $6
+ local.get $7
+ local.get $8
+ call $std/date/test_utc_date
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/util/date/setFullYear (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.load
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load
+ global.get $~lib/util/date/CalendarUtils.JANUARY
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.set $2
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.JANUARY
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.set $3
+ local.get $3
+ local.get $0
+ i32.load offset=52
+ local.get $2
+ i32.sub
+ i32.add
+ local.set $4
+ local.get $0
+ local.set $5
+ global.get $~lib/memory/__stack_pointer
+ local.get $5
+ i32.store
+ local.get $5
+ local.get $4
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $3
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.mul
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#setUTCFullYear (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setFullYear
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/util/date/setMonth (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.load offset=4
+ local.get $1
+ i32.ne
+ if
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.YEAR_IN_MONTHS
+ call $~lib/util/date/CalendarUtils.floorDivide
+ local.set $2
+ local.get $1
+ global.get $~lib/util/date/CalendarUtils.YEAR_IN_MONTHS
+ call $~lib/util/date/CalendarUtils.mod
+ local.set $3
+ local.get $0
+ i32.load offset=8
+ local.set $4
+ local.get $0
+ i32.load
+ local.get $2
+ i32.add
+ local.get $3
+ i32.const 1
+ call $~lib/util/date/CalendarUtils.getFixedDate
+ local.set $5
+ local.get $5
+ local.get $4
+ i32.add
+ i32.const 1
+ i32.sub
+ local.set $6
+ local.get $0
+ i32.load offset=52
+ local.set $7
+ local.get $0
+ local.set $8
+ global.get $~lib/memory/__stack_pointer
+ local.get $8
+ i32.store
+ local.get $8
+ local.get $6
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $6
+ local.get $7
+ i32.sub
+ i64.extend_i32_s
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.mul
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#setUTCMonth (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ i32.const 1
+ i32.add
+ call $~lib/util/date/setMonth
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/util/date/setDate (param $0 i32) (param $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.load offset=8
+ local.get $1
+ i32.ne
+ if
+ local.get $0
+ i32.load offset=8
+ local.set $2
+ local.get $0
+ i32.load offset=52
+ local.get $1
+ i32.add
+ local.get $2
+ i32.sub
+ local.set $3
+ local.get $0
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ local.get $4
+ i32.store
+ local.get $4
+ local.get $3
+ call $~lib/util/date/setCalendarDateFromFixedDate
+ local.get $0
+ local.get $0
+ i64.load offset=40
+ local.get $1
+ local.get $2
+ i32.sub
+ i64.extend_i32_s
+ global.get $~lib/util/date/CalendarUtils.DAY_IN_MILLIS
+ i64.extend_i32_s
+ i64.mul
+ i64.add
+ call $~lib/util/date/CalendarDate#set:millis
+ end
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ )
+ (func $~lib/date/Date#setUTCDate (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setDate
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#setUTCHours (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setHours
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#setUTCMinutes (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setMinutes
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#setUTCSeconds (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setSeconds
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#setUTCMilliseconds (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getUTCCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setMilliseconds
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getLocalCalendarDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store offset=8
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#isNormalizeLocalDate
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 58
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ return
+ else
+ local.get $0
+ i32.load offset=12
+ i32.const 0
+ i32.ne
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 59
+ i32.const 43
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.load8_u offset=32
+ i32.eqz
+ else
+ i32.const 0
+ end
+ if
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store offset=4
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 60
+ i32.const 30
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ return
+ else
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ local.get $0
+ i64.load
+ local.get $0
+ i32.load offset=8
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store offset=8
+ local.get $3
+ call $~lib/util/date/CalendarDate#constructor
+ local.tee $1
+ i32.store offset=4
+ local.get $0
+ local.get $1
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $0
+ i64.load
+ call $~lib/util/date/getCalendarDate
+ call $~lib/date/Date#set:localDate
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $2
+ i32.store offset=12
+ local.get $2
+ if (result i32)
+ local.get $2
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 64
+ i32.const 14
+ call $~lib/builtins/abort
+ unreachable
+ end
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 16
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ return
+ end
+ unreachable
+ end
+ unreachable
+ )
+ (func $~lib/date/Date#setFullYear (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setFullYear
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getFullYear (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#setMonth (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ i32.const 1
+ i32.add
+ call $~lib/util/date/setMonth
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getMonth (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=4
+ i32.const 1
+ i32.sub
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#setDate (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setDate
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getDate (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=8
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#setHours (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setHours
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getHours (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=16
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#setMinutes (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setMinutes
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getMinutes (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=20
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#setSeconds (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setSeconds
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getSeconds (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=24
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $~lib/date/Date#setMilliseconds (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i64)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i64.const 0
+ i64.store
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ call $~lib/date/Date#getLocalCalendarDate
+ local.tee $2
+ i32.store offset=4
+ local.get $2
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $1
+ call $~lib/util/date/setMilliseconds
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ local.get $3
+ i32.store
+ local.get $3
+ local.get $2
+ i64.load offset=40
+ call $~lib/date/Date#setTime
+ local.set $4
+ global.get $~lib/memory/__stack_pointer
+ i32.const 8
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $4
+ )
+ (func $~lib/date/Date#getMilliseconds (param $0 i32) (result i32)
+ (local $1 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ local.get $1
+ i32.store
+ local.get $1
+ call $~lib/date/Date#getLocalCalendarDate
+ i32.load offset=28
+ local.set $1
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $1
+ )
+ (func $start:std/date
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i64)
+ (local $7 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ call $start:~lib/date
+ i32.const 1970
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 1
+ local.set $0
+ i32.const 0
+ local.set $3
+ i32.const 0
+ local.set $4
+ i32.const 0
+ local.set $5
+ i64.const 0
+ local.set $6
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $3
+ local.get $4
+ local.get $5
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ i64.const 0
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 17
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 1970
+ local.set $5
+ i32.const 0
+ local.set $4
+ i32.const 1
+ local.set $3
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 0
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ i64.const 0
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 18
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 2018
+ local.set $5
+ i32.const 10
+ local.set $4
+ i32.const 10
+ local.set $3
+ i32.const 11
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 1
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i64.const 1541847600001
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 21
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ call $~lib/bindings/Date/now
+ i64.trunc_f64_s
+ global.get $std/date/creationTime
+ i64.gt_s
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 23
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 0
+ global.get $std/date/creationTime
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getTime
+ global.get $std/date/creationTime
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 26
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ global.get $std/date/creationTime
+ i64.const 1
+ i64.add
+ call $~lib/date/Date#setTime
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getTime
+ global.get $std/date/creationTime
+ i64.const 1
+ i64.add
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 28
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.const 2018
+ local.set $5
+ i32.const 10
+ local.set $4
+ i32.const 10
+ local.set $3
+ i32.const 11
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 1
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 2018
+ i32.const 10
+ i32.const 10
+ i32.const 6
+ i32.const 11
+ i32.const 0
+ i32.const 0
+ i32.const 1
+ call $std/date/test_utc_millis
+ i32.const 1970
+ local.set $5
+ i32.const 0
+ local.set $4
+ i32.const 1
+ local.set $3
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 0
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 4
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_millis
+ i32.const 70
+ local.set $5
+ i32.const 0
+ local.set $4
+ i32.const 1
+ local.set $3
+ i32.const 11
+ local.set $2
+ i32.const 11
+ local.set $1
+ i32.const 22
+ local.set $0
+ i64.const 22
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 1970
+ i32.const 0
+ i32.const 1
+ i32.const 4
+ i32.const 11
+ i32.const 11
+ i32.const 22
+ i32.const 22
+ call $std/date/test_utc_millis
+ i32.const 0
+ local.set $5
+ i32.const 0
+ local.set $4
+ i32.const 1
+ local.set $3
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 0
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 1900
+ i32.const 0
+ i32.const 1
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_millis
+ i32.const 2018
+ local.set $5
+ i32.const 12
+ local.set $4
+ i32.const 12
+ local.set $3
+ i32.const 12
+ local.set $2
+ i32.const 12
+ local.set $1
+ i32.const 61
+ local.set $0
+ i64.const 61
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ global.get $std/date/creationTime
+ i32.const 2019
+ i32.const 0
+ i32.const 12
+ i32.const 6
+ i32.const 12
+ i32.const 13
+ i32.const 1
+ i32.const 61
+ call $std/date/test_utc_millis
+ i32.const 2000
+ local.set $5
+ i32.const 1
+ local.set $4
+ i32.const 29
+ local.set $3
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 0
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ global.set $std/date/creationTime
+ i32.const 0
+ global.get $std/date/creationTime
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 2000
+ call $~lib/date/Date#setUTCFullYear
+ global.set $std/date/millis
+ global.get $std/date/millis
+ i64.const 951782400000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 50
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 2000
+ i32.const 1
+ i32.const 29
+ i32.const 2
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1999
+ call $~lib/date/Date#setUTCFullYear
+ global.set $std/date/millis
+ global.get $std/date/millis
+ i64.const 920246400000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 53
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1999
+ i32.const 2
+ i32.const 1
+ i32.const 1
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ call $~lib/date/Date#setUTCFullYear
+ global.set $std/date/millis
+ global.get $std/date/millis
+ i64.const 825552000000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 56
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ i32.const 1
+ i32.const 29
+ i32.const 4
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 13
+ call $~lib/date/Date#setUTCMonth
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1997
+ i32.const 2
+ i32.const 1
+ i32.const 6
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i32.const 0
+ i64.const 825552000000
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const -11
+ call $~lib/date/Date#setUTCMonth
+ i64.const 794016000000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 64
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1995
+ i32.const 2
+ i32.const 1
+ i32.const 3
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i32.const 0
+ i32.const 1996
+ local.set $5
+ i32.const 1
+ local.set $4
+ i32.const 29
+ local.set $3
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 0
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 30
+ call $~lib/date/Date#setUTCDate
+ i64.const 825638400000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 69
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ i32.const 0
+ i32.const 1996
+ local.set $5
+ i32.const 1
+ local.set $4
+ i32.const 29
+ local.set $3
+ i32.const 0
+ local.set $2
+ i32.const 0
+ local.set $1
+ i32.const 0
+ local.set $0
+ i64.const 0
+ local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
+ local.get $2
+ local.get $1
+ local.get $0
+ local.get $6
+ f64.convert_i64_s
+ call $~lib/bindings/Date/UTC
+ i64.trunc_f64_s
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 24
+ call $~lib/date/Date#setUTCHours
+ i64.const 825638400000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 74
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 0
+ i32.const 0
i32.const 0
- i32.store
- i32.const 1970
- local.set $2
i32.const 0
- local.set $1
- i32.const 1
- local.set $0
+ call $std/date/test_utc_date
i32.const 0
+ i32.const 1996
+ local.set $5
+ i32.const 1
+ local.set $4
+ i32.const 29
local.set $3
i32.const 0
- local.set $4
+ local.set $2
i32.const 0
- local.set $5
+ local.set $1
+ i32.const 0
+ local.set $0
i64.const 0
local.set $6
+ local.get $5
+ local.get $4
+ local.get $3
local.get $2
local.get $1
local.get $0
- local.get $3
- local.get $4
- local.get $5
local.get $6
f64.convert_i64_s
call $~lib/bindings/Date/UTC
i64.trunc_f64_s
- i64.const 0
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 24
+ i32.const 60
+ i32.mul
+ i32.const 55
+ i32.add
+ call $~lib/date/Date#setUTCMinutes
+ i64.const 825641700000
i64.eq
i32.eqz
if
i32.const 0
- i32.const 32
+ i32.const 944
+ i32.const 79
i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 0
+ i32.const 55
+ i32.const 0
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 6
+ i32.const 60
+ i32.mul
+ call $~lib/date/Date#setUTCSeconds
+ i64.const 825642060000
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 83
i32.const 1
call $~lib/builtins/abort
unreachable
end
- i32.const 1970
- local.set $5
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 1
+ i32.const 1
i32.const 0
- local.set $4
+ i32.const 0
+ call $std/date/test_utc_date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1001
+ call $~lib/date/Date#setUTCMilliseconds
+ i64.const 825642061001
+ i64.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 87
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1996
+ i32.const 2
+ i32.const 1
+ i32.const 5
+ i32.const 1
+ i32.const 1
i32.const 1
+ i32.const 1
+ call $std/date/test_utc_date
+ i32.const 2000
+ local.set $5
+ i32.const 1
+ local.set $4
+ i32.const 29
local.set $3
i32.const 0
local.set $2
@@ -2521,30 +6210,220 @@
f64.convert_i64_s
call $~lib/bindings/Date/UTC
i64.trunc_f64_s
- i64.const 0
- i64.eq
+ global.set $std/date/creationTime
+ i32.const 0
+ global.get $std/date/creationTime
+ call $~lib/date/Date#constructor
+ global.set $std/date/date
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 2000
+ call $~lib/date/Date#setFullYear
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getFullYear
+ i32.const 2000
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 94
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1
+ call $~lib/date/Date#setMonth
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getMonth
+ i32.const 1
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 98
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 8
+ call $~lib/date/Date#setDate
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getDate
+ i32.const 8
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 102
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 24
+ call $~lib/date/Date#setHours
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getHours
+ i32.const 0
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 106
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 24
+ i32.const 60
+ i32.mul
+ i32.const 55
+ i32.add
+ call $~lib/date/Date#setMinutes
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getMinutes
+ i32.const 55
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 110
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 6
+ i32.const 60
+ i32.mul
+ call $~lib/date/Date#setSeconds
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getSeconds
+ i32.const 0
+ i32.eq
+ i32.eqz
+ if
+ i32.const 0
+ i32.const 944
+ i32.const 114
+ i32.const 1
+ call $~lib/builtins/abort
+ unreachable
+ end
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ i32.const 1001
+ call $~lib/date/Date#setMilliseconds
+ drop
+ global.get $std/date/date
+ local.set $7
+ global.get $~lib/memory/__stack_pointer
+ local.get $7
+ i32.store
+ local.get $7
+ call $~lib/date/Date#getMilliseconds
+ i32.const 1
+ i32.eq
i32.eqz
if
i32.const 0
- i32.const 32
- i32.const 2
+ i32.const 944
+ i32.const 118
i32.const 1
call $~lib/builtins/abort
unreachable
end
- i32.const 2018
+ i32.const 0
+ i32.const 1970
local.set $5
- i32.const 10
+ i32.const 0
local.set $4
- i32.const 10
+ i32.const 1
local.set $3
- i32.const 11
+ i32.const 0
local.set $2
i32.const 0
local.set $1
i32.const 0
local.set $0
- i64.const 1
+ i64.const 0
local.set $6
local.get $5
local.get $4
@@ -2556,90 +6435,33 @@
f64.convert_i64_s
call $~lib/bindings/Date/UTC
i64.trunc_f64_s
- global.set $std/date/creationTime
- global.get $std/date/creationTime
- i64.const 1541847600001
- i64.eq
- i32.eqz
- if
- i32.const 0
- i32.const 32
- i32.const 5
- i32.const 1
- call $~lib/builtins/abort
- unreachable
- end
+ call $~lib/date/Date#constructor
+ global.set $std/date/date1
+ i32.const 0
call $~lib/bindings/Date/now
i64.trunc_f64_s
- global.get $std/date/creationTime
- i64.gt_s
- i32.eqz
- if
- i32.const 0
- i32.const 32
- i32.const 7
- i32.const 1
- call $~lib/builtins/abort
- unreachable
- end
- i32.const 192
- call $~lib/rt/itcms/initLazy
- global.set $~lib/rt/itcms/pinSpace
- i32.const 224
- call $~lib/rt/itcms/initLazy
- global.set $~lib/rt/itcms/toSpace
- i32.const 368
- call $~lib/rt/itcms/initLazy
- global.set $~lib/rt/itcms/fromSpace
- i32.const 0
- global.get $std/date/creationTime
call $~lib/date/Date#constructor
- global.set $std/date/date
- global.get $std/date/date
- local.set $7
- global.get $~lib/memory/__stack_pointer
- local.get $7
- i32.store
- local.get $7
- call $~lib/date/Date#getTime
- global.get $std/date/creationTime
- i64.eq
- i32.eqz
- if
- i32.const 0
- i32.const 32
- i32.const 10
- i32.const 1
- call $~lib/builtins/abort
- unreachable
- end
- global.get $std/date/date
+ global.set $std/date/date2
+ global.get $std/date/date1
local.set $7
global.get $~lib/memory/__stack_pointer
local.get $7
i32.store
local.get $7
- global.get $std/date/creationTime
- i64.const 1
- i64.add
- call $~lib/date/Date#setTime
- drop
- global.get $std/date/date
+ call $~lib/date/Date#getTimezoneOffset
+ global.get $std/date/date2
local.set $7
global.get $~lib/memory/__stack_pointer
local.get $7
i32.store
local.get $7
- call $~lib/date/Date#getTime
- global.get $std/date/creationTime
- i64.const 1
- i64.add
- i64.eq
+ call $~lib/date/Date#getTimezoneOffset
+ i32.eq
i32.eqz
if
i32.const 0
- i32.const 32
- i32.const 12
+ i32.const 944
+ i32.const 123
i32.const 1
call $~lib/builtins/abort
unreachable
@@ -2649,8 +6471,8 @@
i32.add
global.set $~lib/memory/__stack_pointer
)
- (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32)
- (local $2 i32)
+ (func $~lib/util/date/TimeZone#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (local $3 i32)
global.get $~lib/memory/__stack_pointer
i32.const 4
i32.sub
@@ -2670,12 +6492,228 @@
i32.store
end
local.get $0
+ i32.const 0
+ call $~lib/util/date/TimeZone#set:ID
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/TimeZone#set:rawOffset
+ local.get $0
+ local.get $1
+ call $~lib/util/date/TimeZone#set:ID
+ local.get $0
+ local.get $2
+ call $~lib/util/date/TimeZone#set:rawOffset
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ )
+ (func $~lib/date/Date#isNormalizeUTCDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.load offset=16
+ i32.const 0
+ i32.ne
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 88
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i64.load offset=40
+ local.get $0
+ i64.load
+ i64.eq
+ else
+ i32.const 0
+ end
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=16
+ local.tee $1
+ i32.store
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 89
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.load8_u offset=32
+ else
+ i32.const 0
+ end
+ local.set $2
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $2
+ )
+ (func $~lib/util/date/CalendarDate#constructor (param $0 i32) (param $1 i64) (param $2 i32) (result i32)
+ (local $3 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
+ local.get $0
+ i32.eqz
+ if
+ global.get $~lib/memory/__stack_pointer
+ i32.const 60
+ i32.const 6
+ call $~lib/rt/itcms/__new
+ local.tee $0
+ i32.store
+ end
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:year
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:month
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:dayOfMonth
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:dayOfWeek
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:hours
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:minutes
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:seconds
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:milliseconds
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ local.get $0
i64.const 0
- call $~lib/date/Date#set:value
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:timeOfDay
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:fixedDate
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:timeZone
local.get $0
local.get $1
- call $~lib/date/Date#set:value
+ call $~lib/util/date/CalendarDate#set:millis
+ local.get $0
+ i32.const 0
+ call $~lib/util/date/CalendarDate#set:isNormalized
+ local.get $0
+ local.get $2
+ call $~lib/util/date/CalendarDate#set:timeZone
+ local.get $0
+ local.set $3
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.add
+ global.set $~lib/memory/__stack_pointer
+ local.get $3
+ )
+ (func $~lib/date/Date#isNormalizeLocalDate (param $0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ global.get $~lib/memory/__stack_pointer
+ i32.const 4
+ i32.sub
+ global.set $~lib/memory/__stack_pointer
+ call $~stack_check
+ global.get $~lib/memory/__stack_pointer
+ i32.const 0
+ i32.store
local.get $0
+ i32.load offset=12
+ i32.const 0
+ i32.ne
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 82
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i64.load offset=40
+ local.get $0
+ i64.load
+ i64.eq
+ else
+ i32.const 0
+ end
+ if (result i32)
+ global.get $~lib/memory/__stack_pointer
+ local.get $0
+ i32.load offset=12
+ local.tee $1
+ i32.store
+ local.get $1
+ if (result i32)
+ local.get $1
+ else
+ i32.const 1024
+ i32.const 1088
+ i32.const 83
+ i32.const 8
+ call $~lib/builtins/abort
+ unreachable
+ end
+ i32.load8_u offset=32
+ else
+ i32.const 0
+ end
local.set $2
global.get $~lib/memory/__stack_pointer
i32.const 4