v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
builtins-temporal.cc
Go to the documentation of this file.
1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
9
10namespace v8 {
11namespace internal {
12
13#define TO_BE_IMPLEMENTED(id) \
14 BUILTIN_NO_RCS(id) { \
15 HandleScope scope(isolate); \
16 UNIMPLEMENTED(); \
17 }
18
19#define TEMPORAL_NOW0(T) \
20 BUILTIN(TemporalNow##T) { \
21 HandleScope scope(isolate); \
22 RETURN_RESULT_OR_FAILURE(isolate, JSTemporal##T::Now(isolate)); \
23 }
24
25#define TEMPORAL_NOW2(T) \
26 BUILTIN(TemporalNow##T) { \
27 HandleScope scope(isolate); \
28 RETURN_RESULT_OR_FAILURE( \
29 isolate, JSTemporal##T::Now(isolate, args.atOrUndefined(isolate, 1), \
30 args.atOrUndefined(isolate, 2))); \
31 }
32
33#define TEMPORAL_NOW_ISO1(T) \
34 BUILTIN(TemporalNow##T##ISO) { \
35 HandleScope scope(isolate); \
36 RETURN_RESULT_OR_FAILURE( \
37 isolate, \
38 JSTemporal##T::NowISO(isolate, args.atOrUndefined(isolate, 1))); \
39 }
40
41#define TEMPORAL_CONSTRUCTOR1(T) \
42 BUILTIN(Temporal##T##Constructor) { \
43 HandleScope scope(isolate); \
44 RETURN_RESULT_OR_FAILURE( \
45 isolate, \
46 JSTemporal##T::Constructor(isolate, args.target(), args.new_target(), \
47 args.atOrUndefined(isolate, 1))); \
48 }
49
50#define TEMPORAL_PROTOTYPE_METHOD0(T, METHOD, name) \
51 BUILTIN(Temporal##T##Prototype##METHOD) { \
52 HandleScope scope(isolate); \
53 CHECK_RECEIVER(JSTemporal##T, obj, "Temporal." #T ".prototype." #name); \
54 RETURN_RESULT_OR_FAILURE(isolate, JSTemporal##T ::METHOD(isolate, obj)); \
55 }
56
57#define TEMPORAL_PROTOTYPE_METHOD1(T, METHOD, name) \
58 BUILTIN(Temporal##T##Prototype##METHOD) { \
59 HandleScope scope(isolate); \
60 CHECK_RECEIVER(JSTemporal##T, obj, "Temporal." #T ".prototype." #name); \
61 RETURN_RESULT_OR_FAILURE( \
62 isolate, \
63 JSTemporal##T ::METHOD(isolate, obj, args.atOrUndefined(isolate, 1))); \
64 }
65
66#define TEMPORAL_PROTOTYPE_METHOD2(T, METHOD, name) \
67 BUILTIN(Temporal##T##Prototype##METHOD) { \
68 HandleScope scope(isolate); \
69 CHECK_RECEIVER(JSTemporal##T, obj, "Temporal." #T ".prototype." #name); \
70 RETURN_RESULT_OR_FAILURE( \
71 isolate, \
72 JSTemporal##T ::METHOD(isolate, obj, args.atOrUndefined(isolate, 1), \
73 args.atOrUndefined(isolate, 2))); \
74 }
75
76#define TEMPORAL_PROTOTYPE_METHOD3(T, METHOD, name) \
77 BUILTIN(Temporal##T##Prototype##METHOD) { \
78 HandleScope scope(isolate); \
79 CHECK_RECEIVER(JSTemporal##T, obj, "Temporal." #T ".prototype." #name); \
80 RETURN_RESULT_OR_FAILURE( \
81 isolate, \
82 JSTemporal##T ::METHOD(isolate, obj, args.atOrUndefined(isolate, 1), \
83 args.atOrUndefined(isolate, 2), \
84 args.atOrUndefined(isolate, 3))); \
85 }
86
87#define TEMPORAL_METHOD1(T, METHOD) \
88 BUILTIN(Temporal##T##METHOD) { \
89 HandleScope scope(isolate); \
90 RETURN_RESULT_OR_FAILURE( \
91 isolate, \
92 JSTemporal##T ::METHOD(isolate, args.atOrUndefined(isolate, 1))); \
93 }
94
95#define TEMPORAL_METHOD2(T, METHOD) \
96 BUILTIN(Temporal##T##METHOD) { \
97 HandleScope scope(isolate); \
98 RETURN_RESULT_OR_FAILURE( \
99 isolate, \
100 JSTemporal##T ::METHOD(isolate, args.atOrUndefined(isolate, 1), \
101 args.atOrUndefined(isolate, 2))); \
102 }
103
104#define TEMPORAL_VALUE_OF(T) \
105 BUILTIN(Temporal##T##PrototypeValueOf) { \
106 HandleScope scope(isolate); \
107 THROW_NEW_ERROR_RETURN_FAILURE( \
108 isolate, NewTypeError(MessageTemplate::kDoNotUse, \
109 isolate->factory()->NewStringFromAsciiChecked( \
110 "Temporal." #T ".prototype.valueOf"), \
111 isolate->factory()->NewStringFromAsciiChecked( \
112 "use Temporal." #T \
113 ".prototype.compare for comparison."))); \
114 }
115
116#define TEMPORAL_GET_SMI(T, METHOD, field) \
117 BUILTIN(Temporal##T##Prototype##METHOD) { \
118 HandleScope scope(isolate); \
119 CHECK_RECEIVER(JSTemporal##T, obj, \
120 "get Temporal." #T ".prototype." #field); \
121 return Smi::FromInt(obj->field()); \
122 }
123
124#define TEMPORAL_METHOD1(T, METHOD) \
125 BUILTIN(Temporal##T##METHOD) { \
126 HandleScope scope(isolate); \
127 RETURN_RESULT_OR_FAILURE( \
128 isolate, \
129 JSTemporal##T ::METHOD(isolate, args.atOrUndefined(isolate, 1))); \
130 }
131
132#define TEMPORAL_METHOD2(T, METHOD) \
133 BUILTIN(Temporal##T##METHOD) { \
134 HandleScope scope(isolate); \
135 RETURN_RESULT_OR_FAILURE( \
136 isolate, \
137 JSTemporal##T ::METHOD(isolate, args.atOrUndefined(isolate, 1), \
138 args.atOrUndefined(isolate, 2))); \
139 }
140
141#define TEMPORAL_GET(T, METHOD, field) \
142 BUILTIN(Temporal##T##Prototype##METHOD) { \
143 HandleScope scope(isolate); \
144 CHECK_RECEIVER(JSTemporal##T, obj, "Temporal." #T ".prototype." #field); \
145 return obj->field(); \
146 }
147
148#define TEMPORAL_GET_NUMBER_AFTER_DIVID(T, M, field, scale, name) \
149 BUILTIN(Temporal##T##Prototype##M) { \
150 HandleScope scope(isolate); \
151 CHECK_RECEIVER(JSTemporal##T, handle, \
152 "get Temporal." #T ".prototype." #name); \
153 DirectHandle<BigInt> value; \
154 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( \
155 isolate, value, \
156 BigInt::Divide(isolate, direct_handle(handle->field(), isolate), \
157 BigInt::FromUint64(isolate, scale))); \
158 DirectHandle<Object> number = BigInt::ToNumber(isolate, value); \
159 DCHECK(std::isfinite(Object::NumberValue(*number))); \
160 return *number; \
161 }
162
163#define TEMPORAL_GET_BIGINT_AFTER_DIVID(T, M, field, scale, name) \
164 BUILTIN(Temporal##T##Prototype##M) { \
165 HandleScope scope(isolate); \
166 CHECK_RECEIVER(JSTemporal##T, handle, \
167 "get Temporal." #T ".prototype." #name); \
168 RETURN_RESULT_OR_FAILURE( \
169 isolate, \
170 BigInt::Divide(isolate, direct_handle(handle->field(), isolate), \
171 BigInt::FromUint64(isolate, scale))); \
172 }
173
174#define TEMPORAL_GET_BY_FORWARD_CALENDAR(T, METHOD, name) \
175 BUILTIN(Temporal##T##Prototype##METHOD) { \
176 HandleScope scope(isolate); \
177 CHECK_RECEIVER(JSTemporal##T, temporal_date, \
178 "get Temporal." #T ".prototype." #name); \
179 RETURN_RESULT_OR_FAILURE( \
180 isolate, \
181 temporal::Calendar##METHOD( \
182 isolate, direct_handle(temporal_date->calendar(), isolate), \
183 temporal_date)); \
184 }
185
186#define TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(T, METHOD, name) \
187 BUILTIN(Temporal##T##Prototype##METHOD) { \
188 HandleScope scope(isolate); \
189 /* 2. Perform ? RequireInternalSlot(temporalDate, */ \
190 /* [[InitializedTemporal#T]]). */ \
191 CHECK_RECEIVER(JSTemporal##T, date_like, \
192 "get Temporal." #T ".prototype." #name); \
193 /* 3. Let calendar be temporalDate.[[Calendar]]. */ \
194 DirectHandle<JSReceiver> calendar(date_like->calendar(), isolate); \
195 /* 2. Return ? Invoke(calendar, "name", « dateLike »). */ \
196 RETURN_RESULT_OR_FAILURE( \
197 isolate, temporal::InvokeCalendarMethod( \
198 isolate, calendar, isolate->factory()->name##_string(), \
199 date_like)); \
200 }
201
202// Now
203TEMPORAL_NOW0(TimeZone)
204TEMPORAL_NOW0(Instant)
205TEMPORAL_NOW2(PlainDateTime)
206TEMPORAL_NOW_ISO1(PlainDateTime)
207TEMPORAL_NOW2(PlainDate)
208TEMPORAL_NOW_ISO1(PlainDate)
209
210// There is NO Temporal.now.plainTime
211// See https://github.com/tc39/proposal-temporal/issues/1540
212TEMPORAL_NOW_ISO1(PlainTime)
213TEMPORAL_NOW2(ZonedDateTime)
214TEMPORAL_NOW_ISO1(ZonedDateTime)
215
216// PlainDate
217BUILTIN(TemporalPlainDateConstructor) {
218 HandleScope scope(isolate);
221 isolate, args.target(), args.new_target(),
222 args.atOrUndefined(isolate, 1), // iso_year
223 args.atOrUndefined(isolate, 2), // iso_month
224 args.atOrUndefined(isolate, 3), // iso_day
225 args.atOrUndefined(isolate, 4))); // calendar_like
226}
227TEMPORAL_METHOD2(PlainDate, From)
228TEMPORAL_METHOD2(PlainDate, Compare)
229TEMPORAL_GET(PlainDate, Calendar, calendar)
230TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDate, Year, year)
231TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDate, Month, month)
232TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDate, MonthCode, monthCode)
233TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDate, Day, day)
234TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, DayOfWeek, dayOfWeek)
235TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, DayOfYear, dayOfYear)
236TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, WeekOfYear, weekOfYear)
237TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, DaysInWeek, daysInWeek)
238TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, DaysInMonth, daysInMonth)
239TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, DaysInYear, daysInYear)
240TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, MonthsInYear, monthsInYear)
241TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDate, InLeapYear, inLeapYear)
242TEMPORAL_PROTOTYPE_METHOD0(PlainDate, ToPlainYearMonth, toPlainYearMonth)
243TEMPORAL_PROTOTYPE_METHOD0(PlainDate, ToPlainMonthDay, toPlainMonthDay)
244TEMPORAL_PROTOTYPE_METHOD2(PlainDate, Add, add)
245TEMPORAL_PROTOTYPE_METHOD2(PlainDate, Subtract, subtract)
246TEMPORAL_PROTOTYPE_METHOD1(PlainDate, WithCalendar, withCalendar)
247TEMPORAL_PROTOTYPE_METHOD2(PlainDate, With, with)
248TEMPORAL_PROTOTYPE_METHOD0(PlainDate, GetISOFields, getISOFields)
249TEMPORAL_PROTOTYPE_METHOD2(PlainDate, Since, since)
250TEMPORAL_PROTOTYPE_METHOD2(PlainDate, Until, until)
251TEMPORAL_PROTOTYPE_METHOD1(PlainDate, ToPlainDateTime, toPlainDateTime)
252TEMPORAL_PROTOTYPE_METHOD1(PlainDate, ToZonedDateTime, toZonedDateTime)
253TEMPORAL_PROTOTYPE_METHOD1(PlainDate, Equals, equals)
254TEMPORAL_VALUE_OF(PlainDate)
255TEMPORAL_PROTOTYPE_METHOD0(PlainDate, ToJSON, toJSON)
256TEMPORAL_PROTOTYPE_METHOD2(PlainDate, ToLocaleString, toLocaleString)
257TEMPORAL_PROTOTYPE_METHOD1(PlainDate, ToString, toString)
258
259// PlainTime
260BUILTIN(TemporalPlainTimeConstructor) {
261 HandleScope scope(isolate);
264 isolate, args.target(), args.new_target(),
265 args.atOrUndefined(isolate, 1), // hour
266 args.atOrUndefined(isolate, 2), // minute
267 args.atOrUndefined(isolate, 3), // second
268 args.atOrUndefined(isolate, 4), // millisecond
269 args.atOrUndefined(isolate, 5), // microsecond
270 args.atOrUndefined(isolate, 6))); // nanosecond
271}
272TEMPORAL_GET(PlainTime, Calendar, calendar)
273TEMPORAL_GET_SMI(PlainTime, Hour, iso_hour)
274TEMPORAL_GET_SMI(PlainTime, Minute, iso_minute)
275TEMPORAL_GET_SMI(PlainTime, Second, iso_second)
276TEMPORAL_GET_SMI(PlainTime, Millisecond, iso_millisecond)
277TEMPORAL_GET_SMI(PlainTime, Microsecond, iso_microsecond)
278TEMPORAL_GET_SMI(PlainTime, Nanosecond, iso_nanosecond)
279TEMPORAL_METHOD2(PlainTime, From)
280TEMPORAL_PROTOTYPE_METHOD1(PlainTime, ToZonedDateTime, toZonedDateTime)
281TEMPORAL_METHOD2(PlainTime, Compare)
282TEMPORAL_PROTOTYPE_METHOD1(PlainTime, Equals, equals)
283TEMPORAL_PROTOTYPE_METHOD1(PlainTime, Add, add)
284TEMPORAL_PROTOTYPE_METHOD1(PlainTime, Subtract, subtract)
285TEMPORAL_PROTOTYPE_METHOD0(PlainTime, GetISOFields, getISOFields)
286TEMPORAL_PROTOTYPE_METHOD1(PlainTime, Round, round)
287TEMPORAL_PROTOTYPE_METHOD2(PlainTime, Since, since)
288TEMPORAL_PROTOTYPE_METHOD1(PlainTime, ToPlainDateTime, toPlainDateTime)
289TEMPORAL_PROTOTYPE_METHOD0(PlainTime, ToJSON, toJSON)
290TEMPORAL_PROTOTYPE_METHOD2(PlainTime, ToLocaleString, toLocaleString)
291TEMPORAL_PROTOTYPE_METHOD1(PlainTime, ToString, toString)
292TEMPORAL_PROTOTYPE_METHOD2(PlainTime, Until, until)
293TEMPORAL_PROTOTYPE_METHOD2(PlainTime, With, with)
294TEMPORAL_VALUE_OF(PlainTime)
295
296// PlainDateTime
297BUILTIN(TemporalPlainDateTimeConstructor) {
298 HandleScope scope(isolate);
301 isolate, args.target(), args.new_target(),
302 args.atOrUndefined(isolate, 1), // iso_year
303 args.atOrUndefined(isolate, 2), // iso_month
304 args.atOrUndefined(isolate, 3), // iso_day
305 args.atOrUndefined(isolate, 4), // hour
306 args.atOrUndefined(isolate, 5), // minute
307 args.atOrUndefined(isolate, 6), // second
308 args.atOrUndefined(isolate, 7), // millisecond
309 args.atOrUndefined(isolate, 8), // microsecond
310 args.atOrUndefined(isolate, 9), // nanosecond
311 args.atOrUndefined(isolate, 10))); // calendar_like
312}
313TEMPORAL_GET(PlainDateTime, Calendar, calendar)
314TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDateTime, Year, year)
315TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDateTime, Month, month)
316TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDateTime, MonthCode, monthCode)
317TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDateTime, Day, day)
318TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, DayOfWeek, dayOfWeek)
319TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, DayOfYear, dayOfYear)
320TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, WeekOfYear, weekOfYear)
321TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, DaysInWeek, daysInWeek)
322TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, DaysInMonth, daysInMonth)
323TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, DaysInYear, daysInYear)
324TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, MonthsInYear,
325 monthsInYear)
326TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainDateTime, InLeapYear, inLeapYear)
327TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, WithCalendar, withCalendar)
328TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, WithPlainTime, withPlainTime)
329TEMPORAL_GET_SMI(PlainDateTime, Hour, iso_hour)
330TEMPORAL_GET_SMI(PlainDateTime, Minute, iso_minute)
331TEMPORAL_GET_SMI(PlainDateTime, Second, iso_second)
332TEMPORAL_GET_SMI(PlainDateTime, Millisecond, iso_millisecond)
333TEMPORAL_GET_SMI(PlainDateTime, Microsecond, iso_microsecond)
334TEMPORAL_GET_SMI(PlainDateTime, Nanosecond, iso_nanosecond)
335TEMPORAL_METHOD2(PlainDateTime, From)
336TEMPORAL_METHOD2(PlainDateTime, Compare)
337TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, Equals, equals)
338TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainYearMonth, toPlainYearMonth)
339TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainMonthDay, toPlainMonthDay)
340TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, ToZonedDateTime, toZonedDateTime)
341TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, GetISOFields, getISOFields)
342TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, WithPlainDate, withPlainDate)
343TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, With, with)
344TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, Add, add)
345TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, Round, round)
346TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, Since, since)
347TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, Subtract, subtract)
348TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainDate, toPlainDate)
349TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToPlainTime, toPlainTime)
350TEMPORAL_PROTOTYPE_METHOD0(PlainDateTime, ToJSON, toJSON)
351TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, ToLocaleString, toLocaleString)
352TEMPORAL_PROTOTYPE_METHOD1(PlainDateTime, ToString, toString)
353TEMPORAL_PROTOTYPE_METHOD2(PlainDateTime, Until, until)
354TEMPORAL_VALUE_OF(PlainDateTime)
355
356// PlainYearMonth
357BUILTIN(TemporalPlainYearMonthConstructor) {
358 HandleScope scope(isolate);
361 isolate, args.target(), args.new_target(),
362 args.atOrUndefined(isolate, 1), // iso_year
363 args.atOrUndefined(isolate, 2), // iso_month
364 args.atOrUndefined(isolate, 3), // calendar_like
365 args.atOrUndefined(isolate, 4))); // reference_iso_day
366}
367TEMPORAL_GET(PlainYearMonth, Calendar, calendar)
368TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainYearMonth, Year, year)
369TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainYearMonth, Month, month)
370TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainYearMonth, MonthCode, monthCode)
371TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainYearMonth, DaysInYear, daysInYear)
372TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainYearMonth, DaysInMonth, daysInMonth)
373TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainYearMonth, MonthsInYear,
374 monthsInYear)
375TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(PlainYearMonth, InLeapYear, inLeapYear)
376TEMPORAL_METHOD2(PlainYearMonth, From)
377TEMPORAL_METHOD2(PlainYearMonth, Compare)
378TEMPORAL_PROTOTYPE_METHOD2(PlainYearMonth, Add, add)
379TEMPORAL_PROTOTYPE_METHOD2(PlainYearMonth, Subtract, subtract)
380TEMPORAL_PROTOTYPE_METHOD1(PlainYearMonth, Equals, equals)
381TEMPORAL_PROTOTYPE_METHOD2(PlainYearMonth, With, with)
382TEMPORAL_PROTOTYPE_METHOD1(PlainYearMonth, ToPlainDate, toPlainDate)
383TEMPORAL_PROTOTYPE_METHOD0(PlainYearMonth, GetISOFields, getISOFields)
384TEMPORAL_VALUE_OF(PlainYearMonth)
385TEMPORAL_PROTOTYPE_METHOD2(PlainYearMonth, Since, since)
386TEMPORAL_PROTOTYPE_METHOD2(PlainYearMonth, ToLocaleString, toLocaleString)
387TEMPORAL_PROTOTYPE_METHOD0(PlainYearMonth, ToJSON, toJSON)
388TEMPORAL_PROTOTYPE_METHOD1(PlainYearMonth, ToString, toString)
389TEMPORAL_PROTOTYPE_METHOD2(PlainYearMonth, Until, until)
390
391// PlainMonthDay
392BUILTIN(TemporalPlainMonthDayConstructor) {
393 HandleScope scope(isolate);
396 isolate, args.target(), args.new_target(),
397 args.atOrUndefined(isolate, 1), // iso_month
398 args.atOrUndefined(isolate, 2), // iso_day
399 args.atOrUndefined(isolate, 3), // calendar_like
400 args.atOrUndefined(isolate, 4))); // reference_iso_year
401}
402TEMPORAL_GET(PlainMonthDay, Calendar, calendar)
403TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainMonthDay, MonthCode, monthCode)
404TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainMonthDay, Day, day)
405TEMPORAL_METHOD2(PlainMonthDay, From)
406TEMPORAL_PROTOTYPE_METHOD1(PlainMonthDay, Equals, equals)
407TEMPORAL_PROTOTYPE_METHOD2(PlainMonthDay, With, with)
408TEMPORAL_PROTOTYPE_METHOD1(PlainMonthDay, ToPlainDate, toPlainDate)
409TEMPORAL_PROTOTYPE_METHOD0(PlainMonthDay, GetISOFields, getISOFields)
410TEMPORAL_VALUE_OF(PlainMonthDay)
411TEMPORAL_PROTOTYPE_METHOD0(PlainMonthDay, ToJSON, toJSON)
412TEMPORAL_PROTOTYPE_METHOD2(PlainMonthDay, ToLocaleString, toLocaleString)
413TEMPORAL_PROTOTYPE_METHOD1(PlainMonthDay, ToString, toString)
414
415// ZonedDateTime
416
417#define TEMPORAL_ZONED_DATE_TIME_GET_PREPARE(M) \
418 HandleScope scope(isolate); \
419 const char* method_name = "get Temporal.ZonedDateTime.prototype." #M; \
420 /* 1. Let zonedDateTime be the this value. */ \
421 /* 2. Perform ? RequireInternalSlot(zonedDateTime, */ \
422 /* [[InitializedTemporalZonedDateTime]]). */ \
423 CHECK_RECEIVER(JSTemporalZonedDateTime, zoned_date_time, method_name); \
424 /* 3. Let timeZone be zonedDateTime.[[TimeZone]]. */ \
425 DirectHandle<JSReceiver> time_zone(zoned_date_time->time_zone(), isolate); \
426 /* 4. Let instant be ? */ \
427 /* CreateTemporalInstant(zonedDateTime.[[Nanoseconds]]). */ \
428 DirectHandle<JSTemporalInstant> instant; \
429 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( \
430 isolate, instant, \
431 temporal::CreateTemporalInstant( \
432 isolate, direct_handle(zoned_date_time->nanoseconds(), isolate))); \
433 /* 5. Let calendar be zonedDateTime.[[Calendar]]. */ \
434 DirectHandle<JSReceiver> calendar(zoned_date_time->calendar(), isolate); \
435 /* 6. Let temporalDateTime be ? */ \
436 /* BuiltinTimeZoneGetPlainDateTimeFor(timeZone, */ \
437 /* instant, calendar). */ \
438 DirectHandle<JSTemporalPlainDateTime> temporal_date_time; \
439 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( \
440 isolate, temporal_date_time, \
441 temporal::BuiltinTimeZoneGetPlainDateTimeFor( \
442 isolate, time_zone, instant, calendar, method_name));
443
444#define TEMPORAL_ZONED_DATE_TIME_GET_BY_FORWARD_TIME_ZONE_AND_CALENDAR(M) \
445 BUILTIN(TemporalZonedDateTimePrototype##M) { \
446 TEMPORAL_ZONED_DATE_TIME_GET_PREPARE(M) \
447 /* 7. Return ? Calendar##M(calendar, temporalDateTime). */ \
448 RETURN_RESULT_OR_FAILURE( \
449 isolate, \
450 temporal::Calendar##M(isolate, calendar, temporal_date_time)); \
451 }
452
453#define TEMPORAL_ZONED_DATE_TIME_GET_INT_BY_FORWARD_TIME_ZONE(M, field) \
454 BUILTIN(TemporalZonedDateTimePrototype##M) { \
455 TEMPORAL_ZONED_DATE_TIME_GET_PREPARE(M) \
456 /* 7. Return 𝔽(temporalDateTime.[[ #field ]]). */ \
457 return Smi::FromInt(temporal_date_time->field()); \
458 }
459
460BUILTIN(TemporalZonedDateTimeConstructor) {
461 HandleScope scope(isolate);
464 isolate, args.target(), args.new_target(),
465 args.atOrUndefined(isolate, 1), // epoch_nanoseconds
466 args.atOrUndefined(isolate, 2), // time_zone_like
467 args.atOrUndefined(isolate, 3))); // calendar_like
468}
469TEMPORAL_METHOD2(ZonedDateTime, From)
470TEMPORAL_METHOD2(ZonedDateTime, Compare)
471TEMPORAL_GET(ZonedDateTime, Calendar, calendar)
472TEMPORAL_GET(ZonedDateTime, TimeZone, time_zone)
477TEMPORAL_GET(ZonedDateTime, EpochNanoseconds, nanoseconds)
478TEMPORAL_GET_NUMBER_AFTER_DIVID(ZonedDateTime, EpochSeconds, nanoseconds,
479 1000000000, epochSeconds)
481 1000000, epochMilliseconds)
482TEMPORAL_GET_BIGINT_AFTER_DIVID(ZonedDateTime, EpochMicroseconds, nanoseconds,
483 1000, epochMicroseconds)
488 iso_millisecond)
490 iso_microsecond)
492 iso_nanosecond)
501TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, Equals, equals)
502TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, HoursInDay, hoursInDay)
503TEMPORAL_PROTOTYPE_METHOD2(ZonedDateTime, With, with)
504TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, WithCalendar, withCalendar)
505TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, WithPlainDate, withPlainDate)
506TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, WithPlainTime, withPlainTime)
507TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, WithTimeZone, withTimeZone)
508TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToPlainYearMonth, toPlainYearMonth)
509TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToPlainMonthDay, toPlainMonthDay)
510TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, Round, round)
511TEMPORAL_PROTOTYPE_METHOD2(ZonedDateTime, Add, add)
512TEMPORAL_PROTOTYPE_METHOD2(ZonedDateTime, Subtract, subtract)
513TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, GetISOFields, getISOFields)
514TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, OffsetNanoseconds, offsetNanoseconds)
516TEMPORAL_PROTOTYPE_METHOD2(ZonedDateTime, Since, since)
517TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, StartOfDay, startOfDay)
518TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToInstant, toInstant)
519TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToJSON, toJSON)
520TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToPlainDate, toPlainDate)
521TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToPlainTime, toPlainTime)
522TEMPORAL_PROTOTYPE_METHOD0(ZonedDateTime, ToPlainDateTime, toPlainDateTime)
523TEMPORAL_PROTOTYPE_METHOD2(ZonedDateTime, ToLocaleString, toLocaleString)
524TEMPORAL_PROTOTYPE_METHOD1(ZonedDateTime, ToString, toString)
525TEMPORAL_PROTOTYPE_METHOD2(ZonedDateTime, Until, until)
526TEMPORAL_VALUE_OF(ZonedDateTime)
527
528// Duration
529BUILTIN(TemporalDurationConstructor) {
530 HandleScope scope(isolate);
533 isolate, args.target(), args.new_target(),
534 args.atOrUndefined(isolate, 1), // years
535 args.atOrUndefined(isolate, 2), // months
536 args.atOrUndefined(isolate, 3), // weeks
537 args.atOrUndefined(isolate, 4), // days
538 args.atOrUndefined(isolate, 5), // hours
539 args.atOrUndefined(isolate, 6), // minutes
540 args.atOrUndefined(isolate, 7), // seconds
541 args.atOrUndefined(isolate, 8), // milliseconds
542 args.atOrUndefined(isolate, 9), // microseconds
543 args.atOrUndefined(isolate, 10))); // nanoseconds
544}
545
546BUILTIN(TemporalDurationCompare) {
547 HandleScope scope(isolate);
549 isolate, args.atOrUndefined(isolate, 1),
550 args.atOrUndefined(isolate, 2),
551 args.atOrUndefined(isolate, 3)));
552}
553TEMPORAL_METHOD1(Duration, From)
554TEMPORAL_GET(Duration, Years, years)
555TEMPORAL_GET(Duration, Months, months)
556TEMPORAL_GET(Duration, Weeks, weeks)
557TEMPORAL_GET(Duration, Days, days)
558TEMPORAL_GET(Duration, Hours, hours)
559TEMPORAL_GET(Duration, Minutes, minutes)
560TEMPORAL_GET(Duration, Seconds, seconds)
561TEMPORAL_GET(Duration, Milliseconds, milliseconds)
562TEMPORAL_GET(Duration, Microseconds, microseconds)
563TEMPORAL_GET(Duration, Nanoseconds, nanoseconds)
564TEMPORAL_PROTOTYPE_METHOD1(Duration, Round, round)
565TEMPORAL_PROTOTYPE_METHOD1(Duration, Total, total)
566TEMPORAL_PROTOTYPE_METHOD1(Duration, With, with)
567TEMPORAL_PROTOTYPE_METHOD0(Duration, Sign, sign)
568TEMPORAL_PROTOTYPE_METHOD0(Duration, Blank, blank)
569TEMPORAL_PROTOTYPE_METHOD0(Duration, Negated, negated)
570TEMPORAL_PROTOTYPE_METHOD0(Duration, Abs, abs)
571TEMPORAL_PROTOTYPE_METHOD2(Duration, Add, add)
572TEMPORAL_PROTOTYPE_METHOD2(Duration, Subtract, subtract)
573TEMPORAL_VALUE_OF(Duration)
574TEMPORAL_PROTOTYPE_METHOD0(Duration, ToJSON, toJSON)
575TEMPORAL_PROTOTYPE_METHOD2(Duration, ToLocaleString, toLocaleString)
576TEMPORAL_PROTOTYPE_METHOD1(Duration, ToString, toString)
577
578// Instant
580TEMPORAL_METHOD1(Instant, FromEpochSeconds)
581TEMPORAL_METHOD1(Instant, FromEpochMilliseconds)
582TEMPORAL_METHOD1(Instant, FromEpochMicroseconds)
583TEMPORAL_METHOD1(Instant, FromEpochNanoseconds)
584TEMPORAL_METHOD1(Instant, From)
586TEMPORAL_PROTOTYPE_METHOD1(Instant, Equals, equals)
587TEMPORAL_VALUE_OF(Instant)
588TEMPORAL_GET(Instant, EpochNanoseconds, nanoseconds)
589TEMPORAL_GET_NUMBER_AFTER_DIVID(Instant, EpochSeconds, nanoseconds, 1000000000,
590 epochSeconds)
592 1000000, epochMilliseconds)
593TEMPORAL_GET_BIGINT_AFTER_DIVID(Instant, EpochMicroseconds, nanoseconds, 1000,
594 epochMicroseconds)
595TEMPORAL_PROTOTYPE_METHOD1(Instant, Add, add)
596TEMPORAL_PROTOTYPE_METHOD1(Instant, Round, round)
597TEMPORAL_PROTOTYPE_METHOD2(Instant, Since, since)
598TEMPORAL_PROTOTYPE_METHOD1(Instant, Subtract, subtract)
599TEMPORAL_PROTOTYPE_METHOD0(Instant, ToJSON, toJSON)
600TEMPORAL_PROTOTYPE_METHOD2(Instant, ToLocaleString, toLocaleString)
601TEMPORAL_PROTOTYPE_METHOD1(Instant, ToString, toString)
602TEMPORAL_PROTOTYPE_METHOD1(Instant, ToZonedDateTime, toZonedDateTime)
603TEMPORAL_PROTOTYPE_METHOD1(Instant, ToZonedDateTimeISO, toZonedDateTimeISO)
604TEMPORAL_PROTOTYPE_METHOD2(Instant, Until, until)
605
606// Calendar
607TEMPORAL_CONSTRUCTOR1(Calendar)
608
609// #sec-get-temporal.calendar.prototype.id
610BUILTIN(TemporalCalendarPrototypeId) {
611 HandleScope scope(isolate);
612 // 1. Let calendar be the this value.
613 // 2. Perform ? RequireInternalSlot(calendar,
614 // [[InitializedTemporalCalendar]]).
616 "Temporal.Calendar.prototype.id");
617 // 3. Return ? ToString(calendar).
619}
620
621// #sec-temporal.calendar.prototype.tojson
622BUILTIN(TemporalCalendarPrototypeToJSON) {
623 HandleScope scope(isolate);
624 // 1. Let calendar be the this value.
625 // 2. Perform ? RequireInternalSlot(calendar,
626 // [[InitializedTemporalCalendar]]).
628 "Temporal.Calendar.prototype.toJSON");
629 // 3. Return ? ToString(calendar).
631}
632
633// #sec-temporal.calendar.prototype.tostring
634BUILTIN(TemporalCalendarPrototypeToString) {
635 HandleScope scope(isolate);
636 const char* method_name = "Temporal.Calendar.prototype.toString";
637 // 1. Let calendar be the this value.
638 // 2. Perform ? RequireInternalSlot(calendar,
639 // [[InitializedTemporalCalendar]]).
641 // 3. Return calendar.[[Identifier]].
643 isolate, JSTemporalCalendar::ToString(isolate, calendar, method_name));
644}
645
646TEMPORAL_PROTOTYPE_METHOD3(Calendar, DateAdd, dateAdd)
647TEMPORAL_PROTOTYPE_METHOD2(Calendar, DateFromFields, dateFromFields)
648TEMPORAL_PROTOTYPE_METHOD3(Calendar, DateUntil, dateUntil)
649TEMPORAL_PROTOTYPE_METHOD1(Calendar, Day, day)
650TEMPORAL_PROTOTYPE_METHOD1(Calendar, DaysInMonth, daysInMonth)
651TEMPORAL_PROTOTYPE_METHOD1(Calendar, DaysInWeek, daysInWeek)
652TEMPORAL_PROTOTYPE_METHOD1(Calendar, DaysInYear, daysInYear)
653TEMPORAL_PROTOTYPE_METHOD1(Calendar, DayOfWeek, dayOfWeek)
654TEMPORAL_PROTOTYPE_METHOD1(Calendar, DayOfYear, dayOfYear)
655TEMPORAL_PROTOTYPE_METHOD1(Calendar, InLeapYear, inLeapYear)
656TEMPORAL_PROTOTYPE_METHOD2(Calendar, MergeFields, mergeFields)
657TEMPORAL_PROTOTYPE_METHOD1(Calendar, Month, month)
658TEMPORAL_PROTOTYPE_METHOD1(Calendar, MonthCode, monthCode)
659TEMPORAL_PROTOTYPE_METHOD2(Calendar, MonthDayFromFields, monthDayFromFields)
660TEMPORAL_PROTOTYPE_METHOD1(Calendar, MonthsInYear, monthsInYear)
661TEMPORAL_PROTOTYPE_METHOD1(Calendar, Year, year)
662TEMPORAL_PROTOTYPE_METHOD2(Calendar, YearMonthFromFields, yearMonthFromFields)
663TEMPORAL_PROTOTYPE_METHOD1(Calendar, WeekOfYear, weekOfYear)
664// #sec-temporal.calendar.from
665BUILTIN(TemporalCalendarFrom) {
666 HandleScope scope(isolate);
668 isolate, args.atOrUndefined(isolate, 1),
669 "Temporal.Calendar.from"));
670}
671
672// TimeZone
673TEMPORAL_CONSTRUCTOR1(TimeZone)
674TEMPORAL_PROTOTYPE_METHOD2(TimeZone, GetInstantFor, getInstantFor)
675TEMPORAL_PROTOTYPE_METHOD1(TimeZone, GetNextTransition, getNextTransition)
676TEMPORAL_PROTOTYPE_METHOD1(TimeZone, GetOffsetNanosecondsFor,
677 getOffsetNanosecondsFor)
678TEMPORAL_PROTOTYPE_METHOD1(TimeZone, GetOffsetStringFor, getOffsetStringFor)
679TEMPORAL_PROTOTYPE_METHOD2(TimeZone, GetPlainDateTimeFor, getPlainDateTimeFor)
681 getPossibleInstantFor)
682TEMPORAL_PROTOTYPE_METHOD1(TimeZone, GetPreviousTransition,
683 getPreviousTransition)
684
685// #sec-get-temporal.timezone.prototype.id
686BUILTIN(TemporalTimeZonePrototypeId) {
687 HandleScope scope(isolate);
688 // 1. Let timeZone be the this value.
689 // 2. Perform ? RequireInternalSlot(timeZone,
690 // [[InitializedTemporalTimeZone]]).
692 "Temporal.TimeZone.prototype.id");
693 // 3. Return ? ToString(timeZone).
695}
696
697// #sec-temporal.timezone.prototype.tojson
698BUILTIN(TemporalTimeZonePrototypeToJSON) {
699 HandleScope scope(isolate);
700 // 1. Let timeZone be the this value.
701 // 2. Perform ? RequireInternalSlot(timeZone,
702 // [[InitializedTemporalTimeZone]]).
704 "Temporal.TimeZone.prototype.toJSON");
705 // 3. Return ? ToString(timeZone).
707}
708
709// #sec-temporal.timezone.prototype.tostring
710BUILTIN(TemporalTimeZonePrototypeToString) {
711 HandleScope scope(isolate);
712 const char* method_name = "Temporal.TimeZone.prototype.toString";
713 // 1. Let timeZone be the this value.
714 // 2. Perform ? RequireInternalSlot(timeZone,
715 // [[InitializedTemporalTimeZone]]).
717 // 3. Return timeZone.[[Identifier]].
719 isolate, JSTemporalTimeZone::ToString(isolate, time_zone, method_name));
720}
721
722// #sec-temporal.timezone.from
723BUILTIN(TemporalTimeZoneFrom) {
724 HandleScope scope(isolate);
726 isolate, args.atOrUndefined(isolate, 1),
727 "Temporal.TimeZone.from"));
728}
729
730#ifdef V8_INTL_SUPPORT
731// Temporal.Calendar.prototype.era/eraYear
732TEMPORAL_PROTOTYPE_METHOD1(Calendar, Era, era)
733TEMPORAL_PROTOTYPE_METHOD1(Calendar, EraYear, eraYEar)
734// get Temporal.*.prototype.era/eraYear
735TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDate, Era, era)
736TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDate, EraYear, eraYear)
737TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDateTime, Era, era)
738TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainDateTime, EraYear, eraYear)
739TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainYearMonth, Era, era)
740TEMPORAL_GET_BY_FORWARD_CALENDAR(PlainYearMonth, EraYear, eraYear)
743#endif // V8_INTL_SUPPORT
744} // namespace internal
745} // namespace v8
#define TEMPORAL_METHOD1(T, METHOD)
#define TEMPORAL_ZONED_DATE_TIME_GET_INT_BY_FORWARD_TIME_ZONE(M, field)
#define TEMPORAL_CONSTRUCTOR1(T)
#define TEMPORAL_VALUE_OF(T)
#define TEMPORAL_METHOD2(T, METHOD)
#define TEMPORAL_GET(T, METHOD, field)
#define TEMPORAL_GET_BY_FORWARD_CALENDAR(T, METHOD, name)
#define TEMPORAL_PROTOTYPE_METHOD0(T, METHOD, name)
#define TEMPORAL_GET_NUMBER_AFTER_DIVID(T, M, field, scale, name)
#define TEMPORAL_NOW2(T)
#define TEMPORAL_GET_BY_INVOKE_CALENDAR_METHOD(T, METHOD, name)
#define TEMPORAL_NOW_ISO1(T)
#define TEMPORAL_ZONED_DATE_TIME_GET_BY_FORWARD_TIME_ZONE_AND_CALENDAR(M)
#define TEMPORAL_PROTOTYPE_METHOD1(T, METHOD, name)
#define TEMPORAL_PROTOTYPE_METHOD2(T, METHOD, name)
#define TEMPORAL_GET_BIGINT_AFTER_DIVID(T, M, field, scale, name)
#define TEMPORAL_GET_SMI(T, METHOD, field)
#define TEMPORAL_PROTOTYPE_METHOD3(T, METHOD, name)
#define TEMPORAL_NOW0(T)
#define CHECK_RECEIVER(Type, name, method)
#define BUILTIN(name)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< String > ToString(Isolate *isolate, DirectHandle< JSTemporalCalendar > calendar, const char *method_name)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalDuration > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > years, DirectHandle< Object > months, DirectHandle< Object > weeks, DirectHandle< Object > days, DirectHandle< Object > hours, DirectHandle< Object > minutes, DirectHandle< Object > seconds, DirectHandle< Object > milliseconds, DirectHandle< Object > microseconds, DirectHandle< Object > nanoseconds)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Smi > Compare(Isolate *isolate, DirectHandle< Object > one, DirectHandle< Object > two, DirectHandle< Object > options)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalPlainDateTime > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > iso_year, DirectHandle< Object > iso_month, DirectHandle< Object > iso_day, DirectHandle< Object > hour, DirectHandle< Object > minute, DirectHandle< Object > second, DirectHandle< Object > millisecond, DirectHandle< Object > microsecond, DirectHandle< Object > nanosecond, DirectHandle< Object > calendar_like)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalPlainDate > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > iso_year, DirectHandle< Object > iso_month, DirectHandle< Object > iso_day, DirectHandle< Object > calendar_like)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalPlainMonthDay > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > iso_month, DirectHandle< Object > iso_day, DirectHandle< Object > calendar_like, DirectHandle< Object > reference_iso_year)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalPlainTime > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > hour, DirectHandle< Object > minute, DirectHandle< Object > second, DirectHandle< Object > millisecond, DirectHandle< Object > microsecond, DirectHandle< Object > nanosecond)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalPlainYearMonth > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > iso_year, DirectHandle< Object > iso_month, DirectHandle< Object > calendar_like, DirectHandle< Object > reference_iso_day)
static MaybeDirectHandle< Object > ToString(Isolate *isolate, DirectHandle< JSTemporalTimeZone > time_zone, const char *method_name)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSTemporalZonedDateTime > Constructor(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< HeapObject > new_target, DirectHandle< Object > epoch_nanoseconds, DirectHandle< Object > time_zone_like, DirectHandle< Object > calendar_like)
static V8_WARN_UNUSED_RESULT HandleType< String >::MaybeType ToString(Isolate *isolate, HandleType< T > input)
#define RETURN_RESULT_OR_FAILURE(isolate, call)
Definition isolate.h:264
base::Vector< const DirectHandle< Object > > args
Definition execution.cc:74
int32_t offset
double years
double months
double weeks
double days
TimeZoneRecord time_zone
DirectHandle< Object > calendar
MaybeDirectHandle< JSReceiver > ToTemporalCalendar(Isolate *isolate, DirectHandle< Object > temporal_calendar_like, const char *method_name)
MaybeDirectHandle< JSReceiver > ToTemporalTimeZone(Isolate *isolate, DirectHandle< Object > temporal_time_zone_like, const char *method_name)
constexpr const char * ToString(DeoptimizeKind kind)
Definition globals.h:880
std::make_unsigned< T >::type Abs(T a)
Definition utils.h:93
constexpr AddrMode Offset
uint32_t equals
int Compare(const T &a, const T &b)