// Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include 'src/objects/js-temporal-objects.h' bitfield struct JSTemporalCalendarFlags extends uint31 { calendar_index: int32: 5 bit; } bitfield struct JSTemporalYearMonthDay extends uint31 { iso_year: int32: 20 bit; iso_month: int32: 4 bit; iso_day: int32: 5 bit; } bitfield struct JSTemporalHourMinuteSecond extends uint31 { iso_hour: int32: 5 bit; iso_minute: int32: 6 bit; iso_second: int32: 6 bit; } bitfield struct JSTemporalSecondParts extends uint31 { iso_millisecond: int32: 10 bit; iso_microsecond: int32: 10 bit; iso_nanosecond: int32: 10 bit; } bitfield struct JSTemporalTimeZoneFlags extends uint31 { is_offset: bool: 1 bit; offset_milliseconds_or_time_zone_index: int32: 28 bit; } bitfield struct JSTemporalTimeZoneSubMilliseconds extends uint31 { offset_sub_milliseconds: int32: 21 bit; } extern class JSTemporalCalendar extends JSObject { flags: SmiTagged<JSTemporalCalendarFlags>; } extern class JSTemporalDuration extends JSObject { years: Number; months: Number; weeks: Number; days: Number; hours: Number; minutes: Number; seconds: Number; milliseconds: Number; microseconds: Number; nanoseconds: Number; } extern class JSTemporalInstant extends JSObject { nanoseconds: BigInt; } extern class JSTemporalPlainDateTime extends JSObject { year_month_day: SmiTagged<JSTemporalYearMonthDay>; hour_minute_second: SmiTagged<JSTemporalHourMinuteSecond>; second_parts: SmiTagged<JSTemporalSecondParts>; calendar: JSReceiver; } extern class JSTemporalPlainDate extends JSObject { year_month_day: SmiTagged<JSTemporalYearMonthDay>; calendar: JSReceiver; } extern class JSTemporalPlainMonthDay extends JSObject { year_month_day: SmiTagged<JSTemporalYearMonthDay>; calendar: JSReceiver; } extern class JSTemporalPlainTime extends JSObject { hour_minute_second: SmiTagged<JSTemporalHourMinuteSecond>; second_parts: SmiTagged<JSTemporalSecondParts>; calendar: JSReceiver; } extern class JSTemporalPlainYearMonth extends JSObject { year_month_day: SmiTagged<JSTemporalYearMonthDay>; calendar: JSReceiver; } extern class JSTemporalTimeZone extends JSObject { flags: SmiTagged<JSTemporalTimeZoneFlags>; details: SmiTagged<JSTemporalTimeZoneSubMilliseconds>; } extern class JSTemporalZonedDateTime extends JSObject { nanoseconds: BigInt; time_zone: JSReceiver; calendar: JSReceiver; }