Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c39b3d4d67cb16da585b37f7acf747e487f84588
      
https://github.com/WebKit/WebKit/commit/c39b3d4d67cb16da585b37f7acf747e487f84588
  Author: Yusuke Suzuki <[email protected]>
  Date:   2026-06-08 (Mon, 08 Jun 2026)

  Changed paths:
    A JSTests/stress/temporal-zoned-datetime-timezone-identifier.js
    M Source/JavaScriptCore/heap/Heap.cpp
    M Source/JavaScriptCore/heap/Heap.h
    M Source/JavaScriptCore/runtime/ISO8601.cpp
    M Source/JavaScriptCore/runtime/IntlObject.cpp
    M Source/JavaScriptCore/runtime/JSCTimeZone.h
    M Source/JavaScriptCore/runtime/TemporalCalendar.cpp
    M Source/JavaScriptCore/runtime/TemporalCalendar.h
    M Source/JavaScriptCore/runtime/TemporalDuration.cpp
    M Source/JavaScriptCore/runtime/TemporalInstant.cpp
    M Source/JavaScriptCore/runtime/TemporalInstantPrototype.cpp
    M Source/JavaScriptCore/runtime/TemporalNow.cpp
    M Source/JavaScriptCore/runtime/TemporalObject.cpp
    M Source/JavaScriptCore/runtime/TemporalObject.h
    M Source/JavaScriptCore/runtime/TemporalPlainDatePrototype.cpp
    M Source/JavaScriptCore/runtime/TemporalPlainDateTimePrototype.cpp
    M Source/JavaScriptCore/runtime/TemporalZonedDateTime.cpp
    M Source/JavaScriptCore/runtime/TemporalZonedDateTime.h
    M Source/JavaScriptCore/runtime/TemporalZonedDateTimeConstructor.cpp
    M Source/JavaScriptCore/runtime/TemporalZonedDateTimePrototype.cpp
    M Source/JavaScriptCore/runtime/temporal/core/TimeZoneICUBridge.cpp
    M Source/JavaScriptCore/runtime/temporal/core/TimeZoneICUBridge.h

  Log Message:
  -----------
  [JSC] Carry non-primary TimeZone in TemporalZonedDateTime
https://bugs.webkit.org/show_bug.cgi?id=316517
rdar://178974586

Reviewed by Yijia Huang.

This patch extends TimeZoneID to non-primary ID. This allows TimeZone to
carry non-primary IDs (also adding offsetTimeZoneID for offset mode) so
that we can carry user's input without holding String. This
significantly improves several things.

1. TimeZone comparison becomes significantly faster since we can just
   compare IDs and offsets.
2. ZonedDateTime only holds pre-primary-canonicalized TimeZone instead.
   This removes timeZoneId String from that. Furthermore, this makes
   ZonedDateTime non-destructible object as String is removed and TimeZone
   is non-destructible object.
3. We also set numberOfLowerTierPreciseCells = 0 for ZonedDateTime to
   use ExactTime directly.
4. TimeZoneID is extended to support aliases. Primary IDs are sorted and
   listed earlier and then after that, aliases are sorted and listed as
   well.

Test: JSTests/stress/temporal-zoned-datetime-timezone-identifier.js

* JSTests/stress/temporal-zoned-datetime-timezone-identifier.js: Added.
(shouldBe):
(throw.new.Error):
(shouldBe.new.Temporal.ZonedDateTime):
(shouldBeFalse):
* Source/JavaScriptCore/heap/Heap.cpp:
(JSC::Heap::Heap):
* Source/JavaScriptCore/heap/Heap.h:
* Source/JavaScriptCore/runtime/ISO8601.cpp:
(JSC::ISO8601::parseTemporalTimeZoneIdentifier):
* Source/JavaScriptCore/runtime/IntlObject.cpp:
(JSC::intlAvailableTimeZoneEntries):
(JSC::intlTimeZoneIDToString):
(JSC::intlPrimaryTimeZoneID):
(JSC::intlAvailableTimeZoneIndex):
(JSC::intlResolveTimeZoneID):
(JSC::intlAvailableNamedTimeZone):
(JSC::TimeZone::toString const):
(JSC::TimeZone::toICUString const):
(JSC::availablePrimaryTimeZoneIdentifiers):
(JSC::intlAvailableTimeZones): Deleted.
* Source/JavaScriptCore/runtime/JSCTimeZone.h:
* Source/JavaScriptCore/runtime/TemporalCalendar.cpp:
(JSC::readZonedDateTimeFieldsFromObject):
* Source/JavaScriptCore/runtime/TemporalCalendar.h:
* Source/JavaScriptCore/runtime/TemporalDuration.cpp:
(JSC::toRelativeTemporalObject):
* Source/JavaScriptCore/runtime/TemporalInstant.cpp:
* Source/JavaScriptCore/runtime/TemporalInstantPrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/TemporalNow.cpp:
(JSC::resolveNowTimeZone):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/TemporalObject.cpp:
(JSC::toTemporalTimeZoneIdentifier):
* Source/JavaScriptCore/runtime/TemporalObject.h:
* Source/JavaScriptCore/runtime/TemporalPlainDatePrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/TemporalPlainDateTimePrototype.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/TemporalZonedDateTime.cpp:
(JSC::TemporalZonedDateTime::create):
(JSC::TemporalZonedDateTime::tryCreate):
(JSC::TemporalZonedDateTime::withExactTime const):
(JSC::TemporalZonedDateTime::TemporalZonedDateTime):
(JSC::timeZoneFromRecord):
(JSC::toEpochArgsFromString):
(JSC::toEpochArgsFromPropertyBag):
(JSC::TemporalZonedDateTime::from):
(JSC::TemporalZonedDateTime::destroy): Deleted.
(JSC::computeTimeZoneIdFromRecord): Deleted.
* Source/JavaScriptCore/runtime/TemporalZonedDateTime.h:
* Source/JavaScriptCore/runtime/TemporalZonedDateTimeConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/TemporalZonedDateTimePrototype.cpp:
(JSC::differenceTemporalZonedDateTime):
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/temporal/core/TimeZoneICUBridge.cpp:
(JSC::TemporalCore::timeZoneEquals):
* Source/JavaScriptCore/runtime/temporal/core/TimeZoneICUBridge.h:

Canonical link: https://commits.webkit.org/314738@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to