Changeset 290209 in webkit


Ignore:
Timestamp:
Feb 19, 2022 9:43:14 AM (5 months ago)
Author:
dino@apple.com
Message:

[JSC] Implement Temporal.PlainDate
https://bugs.webkit.org/show_bug.cgi?id=230033
<rdar://problem/83127747>

Reviewed by Yusuke Suzuki.

JSTests:

Some basic tests for PlainDate.

  • stress/temporal-plaindate.js: Added.

(shouldBe):
(shouldThrow):
(shouldBe.String.Temporal.PlainDate.from):
(let.text.of.failures.shouldThrow):

Source/JavaScriptCore:

Implement the constructor, from and compare for Temporal.PlainDate.
This is only a partial implementation, because from doesn't
support object parameters, and the compare function creates some
internally. However, it is a start!

  • DerivedSources-input.xcfilelist: Add new files.
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • heap/Heap.cpp: Create the temporalPlainDateSpace.
  • heap/Heap.h:
  • heap/HeapSubspaceTypes.h:
  • runtime/ISO8601.cpp:

(JSC::ISO8601::daysInMonth): Make this publicly visible.
(JSC::ISO8601::temporalDateToString): New method for printing a date.

  • runtime/ISO8601.h:
  • runtime/JSGlobalObject.cpp: Make the m_plainDateStructure object.

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::plainDateStructure):

  • runtime/TemporalObject.cpp: Add the PlainDate constructor.

(JSC::createPlainDateConstructor):

  • runtime/TemporalObject.h:
  • runtime/TemporalPlainDate.cpp: Added.

(JSC::TemporalPlainDate::create):
(JSC::TemporalPlainDate::createStructure):
(JSC::TemporalPlainDate::TemporalPlainDate):
(JSC::TemporalPlainDate::finishCreation):
(JSC::TemporalPlainDate::visitChildrenImpl):
(JSC::toPlainDate):
(JSC::TemporalPlainDate::tryCreateIfValid):
(JSC::TemporalPlainDate::toString const):
(JSC::TemporalPlainDate::from):
(JSC::TemporalPlainDate::compare):

  • runtime/TemporalPlainDate.h: Added.
  • runtime/TemporalPlainDateConstructor.cpp: Added.

(JSC::TemporalPlainDateConstructor::create):
(JSC::TemporalPlainDateConstructor::createStructure):
(JSC::TemporalPlainDateConstructor::TemporalPlainDateConstructor):
(JSC::TemporalPlainDateConstructor::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/TemporalPlainDateConstructor.h: Added.
  • runtime/TemporalPlainDatePrototype.cpp: Added.

(JSC::TemporalPlainDatePrototype::create):
(JSC::TemporalPlainDatePrototype::createStructure):
(JSC::TemporalPlainDatePrototype::TemporalPlainDatePrototype):
(JSC::TemporalPlainDatePrototype::finishCreation):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSC_DEFINE_CUSTOM_GETTER):

  • runtime/TemporalPlainDatePrototype.h: Added.
  • runtime/VM.h: Define the temporalPlainDateSpace.
Location:
trunk
Files:
7 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r290079 r290209  
     12022-02-19  Dean Jackson  <dino@apple.com>
     2
     3        [JSC] Implement Temporal.PlainDate
     4        https://bugs.webkit.org/show_bug.cgi?id=230033
     5        <rdar://problem/83127747>
     6
     7        Reviewed by Yusuke Suzuki.
     8
     9        Some basic tests for PlainDate.
     10
     11        * stress/temporal-plaindate.js: Added.
     12        (shouldBe):
     13        (shouldThrow):
     14        (shouldBe.String.Temporal.PlainDate.from):
     15        (let.text.of.failures.shouldThrow):
     16
    1172022-02-17  Mikhail R. Gadelha  <mikhail@igalia.com>
    218
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r289819 r290209  
    118118    runtime/TemporalNow.cpp
    119119    runtime/TemporalObject.cpp
     120    runtime/TemporalPlainDateConstructor.cpp
     121    runtime/TemporalPlainDatePrototype.cpp
    120122    runtime/TemporalPlainTimeConstructor.cpp
    121123    runtime/TemporalPlainTimePrototype.cpp
  • trunk/Source/JavaScriptCore/ChangeLog

    r290194 r290209  
     12022-02-19  Dean Jackson  <dino@apple.com>
     2
     3        [JSC] Implement Temporal.PlainDate
     4        https://bugs.webkit.org/show_bug.cgi?id=230033
     5        <rdar://problem/83127747>
     6
     7        Reviewed by Yusuke Suzuki.
     8
     9        Implement the constructor, `from` and `compare` for Temporal.PlainDate.
     10        This is only a partial implementation, because `from` doesn't
     11        support object parameters, and the `compare` function creates some
     12        internally. However, it is a start!
     13
     14        * DerivedSources-input.xcfilelist: Add new files.
     15        * DerivedSources-output.xcfilelist:
     16        * DerivedSources.make:
     17        * JavaScriptCore.xcodeproj/project.pbxproj:
     18        * Sources.txt:
     19
     20        * heap/Heap.cpp: Create the temporalPlainDateSpace.
     21        * heap/Heap.h:
     22        * heap/HeapSubspaceTypes.h:
     23
     24        * runtime/ISO8601.cpp:
     25        (JSC::ISO8601::daysInMonth): Make this publicly visible.
     26        (JSC::ISO8601::temporalDateToString): New method for printing a date.
     27        * runtime/ISO8601.h:
     28
     29        * runtime/JSGlobalObject.cpp: Make the m_plainDateStructure object.
     30        (JSC::JSGlobalObject::init):
     31        * runtime/JSGlobalObject.h:
     32        (JSC::JSGlobalObject::plainDateStructure):
     33
     34        * runtime/TemporalObject.cpp: Add the PlainDate constructor.
     35        (JSC::createPlainDateConstructor):
     36        * runtime/TemporalObject.h:
     37
     38        * runtime/TemporalPlainDate.cpp: Added.
     39        (JSC::TemporalPlainDate::create):
     40        (JSC::TemporalPlainDate::createStructure):
     41        (JSC::TemporalPlainDate::TemporalPlainDate):
     42        (JSC::TemporalPlainDate::finishCreation):
     43        (JSC::TemporalPlainDate::visitChildrenImpl):
     44        (JSC::toPlainDate):
     45        (JSC::TemporalPlainDate::tryCreateIfValid):
     46        (JSC::TemporalPlainDate::toString const):
     47        (JSC::TemporalPlainDate::from):
     48        (JSC::TemporalPlainDate::compare):
     49        * runtime/TemporalPlainDate.h: Added.
     50        * runtime/TemporalPlainDateConstructor.cpp: Added.
     51        (JSC::TemporalPlainDateConstructor::create):
     52        (JSC::TemporalPlainDateConstructor::createStructure):
     53        (JSC::TemporalPlainDateConstructor::TemporalPlainDateConstructor):
     54        (JSC::TemporalPlainDateConstructor::finishCreation):
     55        (JSC::JSC_DEFINE_HOST_FUNCTION):
     56        * runtime/TemporalPlainDateConstructor.h: Added.
     57        * runtime/TemporalPlainDatePrototype.cpp: Added.
     58        (JSC::TemporalPlainDatePrototype::create):
     59        (JSC::TemporalPlainDatePrototype::createStructure):
     60        (JSC::TemporalPlainDatePrototype::TemporalPlainDatePrototype):
     61        (JSC::TemporalPlainDatePrototype::finishCreation):
     62        (JSC::JSC_DEFINE_HOST_FUNCTION):
     63        (JSC::JSC_DEFINE_CUSTOM_GETTER):
     64        * runtime/TemporalPlainDatePrototype.h: Added.
     65
     66        * runtime/VM.h: Define the temporalPlainDateSpace.
     67
    1682022-02-18  Yusuke Suzuki  <ysuzuki@apple.com>
    269
  • trunk/Source/JavaScriptCore/DerivedSources-input.xcfilelist

    r287510 r290209  
    192192$(PROJECT_DIR)/runtime/TemporalNow.cpp
    193193$(PROJECT_DIR)/runtime/TemporalObject.cpp
     194$(PROJECT_DIR)/runtime/TemporalPlainDateConstructor.cpp
     195$(PROJECT_DIR)/runtime/TemporalPlainDatePrototype.cpp
    194196$(PROJECT_DIR)/runtime/TemporalPlainTimeConstructor.cpp
    195197$(PROJECT_DIR)/runtime/TemporalPlainTimePrototype.cpp
  • trunk/Source/JavaScriptCore/DerivedSources-output.xcfilelist

    r287510 r290209  
    7777$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalNow.lut.h
    7878$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalObject.lut.h
     79$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainDateConstructor.lut.h
     80$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainDatePrototype.lut.h
    7981$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainTimeConstructor.lut.h
    8082$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainTimePrototype.lut.h
  • trunk/Source/JavaScriptCore/DerivedSources.make

    r288146 r290209  
    208208    TemporalNow.lut.h \
    209209    TemporalObject.lut.h \
     210    TemporalPlainDateConstructor.lut.h \
     211    TemporalPlainDatePrototype.lut.h \
    210212    TemporalPlainTimeConstructor.lut.h \
    211213    TemporalPlainTimePrototype.lut.h \
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r289823 r290209  
    850850                2AD8932B17E3868F00668276 /* HeapIterationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD8932917E3868F00668276 /* HeapIterationScope.h */; };
    851851                2D342F36F7244096804ADB24 /* SourceOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 425BA1337E4344E1B269A671 /* SourceOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; };
     852                31770C5527B94CE600308091 /* TemporalPlainDateConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 31770C4F27B94CE400308091 /* TemporalPlainDateConstructor.h */; };
     853                31770C5727B94CE600308091 /* TemporalPlainDatePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 31770C5127B94CE400308091 /* TemporalPlainDatePrototype.h */; };
     854                31770C5827B94CE600308091 /* TemporalPlainDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 31770C5227B94CE500308091 /* TemporalPlainDate.h */; };
    852855                33111B8B2397256500AA34CE /* Scribble.h in Headers */ = {isa = PBXBuildFile; fileRef = 33111B8A2397256500AA34CE /* Scribble.h */; settings = {ATTRIBUTES = (Private, ); }; };
    853856                3395C70722555F6D00BDBFAD /* B3EliminateDeadCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3395C70522555F6D00BDBFAD /* B3EliminateDeadCode.h */; };
     
    37203723                3032175DF1AD47D8998B34E1 /* JSSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSourceCode.h; sourceTree = "<group>"; };
    37213724                30A5F403F11C4F599CD596D5 /* WasmSignatureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmSignatureInlines.h; sourceTree = "<group>"; };
     3725                31770C4F27B94CE400308091 /* TemporalPlainDateConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporalPlainDateConstructor.h; sourceTree = "<group>"; };
     3726                31770C5027B94CE400308091 /* TemporalPlainDateConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemporalPlainDateConstructor.cpp; sourceTree = "<group>"; };
     3727                31770C5127B94CE400308091 /* TemporalPlainDatePrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporalPlainDatePrototype.h; sourceTree = "<group>"; };
     3728                31770C5227B94CE500308091 /* TemporalPlainDate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporalPlainDate.h; sourceTree = "<group>"; };
     3729                31770C5327B94CE500308091 /* TemporalPlainDate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemporalPlainDate.cpp; sourceTree = "<group>"; };
     3730                31770C5427B94CE500308091 /* TemporalPlainDatePrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemporalPlainDatePrototype.cpp; sourceTree = "<group>"; };
    37223731                33111B8A2397256500AA34CE /* Scribble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Scribble.h; sourceTree = "<group>"; };
    37233732                33743649224D79EF00C8C227 /* B3OptimizeAssociativeExpressionTrees.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = B3OptimizeAssociativeExpressionTrees.cpp; path = b3/B3OptimizeAssociativeExpressionTrees.cpp; sourceTree = "<group>"; };
     
    59325941                                7B98D1331B60CD1E0023B1A4 /* wasm */,
    59335942                                86EAC48C0F93E8B9008EC948 /* yarr */,
    5934                                 533699AF27A306F600C9561D /* Recovered References */,
    59355943                        );
    59365944                        name = JavaScriptCore;
     
    73277335                        isa = PBXGroup;
    73287336                        children = (
    7329                                 37AAC091279F124200D64842 /* WasmBranchHints.h */,
    7330                                 37AAC090279F124100D64842 /* WasmBranchHintsSectionParser.cpp */,
    7331                                 37AAC092279F124200D64842 /* WasmBranchHintsSectionParser.h */,
    73327337                                AD2FCB8A1DB5840000B3E736 /* js */,
    73337338                                52847AD921FFB8630061A9DB /* WasmAirIRGenerator.cpp */,
     
    73397344                                AD4B1DF71DF244D70071AE32 /* WasmBinding.cpp */,
    73407345                                AD4B1DF81DF244D70071AE32 /* WasmBinding.h */,
     7346                                37AAC091279F124200D64842 /* WasmBranchHints.h */,
     7347                                37AAC090279F124100D64842 /* WasmBranchHintsSectionParser.cpp */,
     7348                                37AAC092279F124200D64842 /* WasmBranchHintsSectionParser.h */,
    73417349                                525C0DD71E935847002184CD /* WasmCallee.cpp */,
    73427350                                525C0DD81E935847002184CD /* WasmCallee.h */,
     
    82608268                                F6F150192693D33E004B98EF /* TemporalObject.cpp */,
    82618269                                F6F1501A2693D33E004B98EF /* TemporalObject.h */,
     8270                                31770C5327B94CE500308091 /* TemporalPlainDate.cpp */,
     8271                                31770C5227B94CE500308091 /* TemporalPlainDate.h */,
     8272                                31770C5027B94CE400308091 /* TemporalPlainDateConstructor.cpp */,
     8273                                31770C4F27B94CE400308091 /* TemporalPlainDateConstructor.h */,
     8274                                31770C5427B94CE500308091 /* TemporalPlainDatePrototype.cpp */,
     8275                                31770C5127B94CE400308091 /* TemporalPlainDatePrototype.h */,
    82628276                                E386FD7726E867B700E4C28B /* TemporalPlainTime.cpp */,
    82638277                                E386FD7826E867B800E4C28B /* TemporalPlainTime.h */,
     
    1097910993                                0FE0502B1AA9095600D33B33 /* ScopeOffset.h in Headers */,
    1098010994                                0F24E55217EE274900ABB217 /* ScratchRegisterAllocator.h in Headers */,
    10981                                 37AAC094279F1C0500D64842 /* WasmBranchHints.h in Headers */,
    1098210995                                33111B8B2397256500AA34CE /* Scribble.h in Headers */,
    1098310996                                A5FD0068189AFE9C00633231 /* ScriptArguments.h in Headers */,
     
    1109711110                                F6D67D4826F9130C006E0349 /* TemporalInstantPrototype.lut.h in Headers */,
    1109811111                                F6F150212693D450004B98EF /* TemporalObject.lut.h in Headers */,
     11112                                31770C5827B94CE600308091 /* TemporalPlainDate.h in Headers */,
     11113                                31770C5527B94CE600308091 /* TemporalPlainDateConstructor.h in Headers */,
     11114                                31770C5727B94CE600308091 /* TemporalPlainDatePrototype.h in Headers */,
    1109911115                                E386FD7E26E867B800E4C28B /* TemporalPlainTime.h in Headers */,
    1110011116                                E386FD7B26E867B800E4C28B /* TemporalPlainTimeConstructor.h in Headers */,
     
    1110911125                                0F572D4F16879FDD00E57FBD /* ThunkGenerator.h in Headers */,
    1111011126                                A7386556118697B400540279 /* ThunkGenerators.h in Headers */,
    11111                                 37AAC093279F1BFC00D64842 /* WasmBranchHintsSectionParser.h in Headers */,
    1111211127                                141448CD13A1783700F5BA1A /* TinyBloomFilter.h in Headers */,
    1111311128                                0F55989817C86C5800A1E543 /* ToNativeFromValue.h in Headers */,
     
    1116611181                                53CA730A1EA533D80076049D /* WasmBBQPlan.h in Headers */,
    1116711182                                AD4B1DFA1DF244E20071AE32 /* WasmBinding.h in Headers */,
     11183                                37AAC094279F1C0500D64842 /* WasmBranchHints.h in Headers */,
     11184                                37AAC093279F1BFC00D64842 /* WasmBranchHintsSectionParser.h in Headers */,
    1116811185                                525C0DDA1E935847002184CD /* WasmCallee.h in Headers */,
    1116911186                                526AC4B71E977C5D003500E1 /* WasmCalleeGroup.h in Headers */,
  • trunk/Source/JavaScriptCore/Sources.txt

    r289417 r290209  
    10211021runtime/TemporalNow.cpp
    10221022runtime/TemporalObject.cpp
     1023runtime/TemporalPlainDate.cpp
     1024runtime/TemporalPlainDateConstructor.cpp
     1025runtime/TemporalPlainDatePrototype.cpp
    10231026runtime/TemporalPlainTime.cpp
    10241027runtime/TemporalPlainTimeConstructor.cpp
  • trunk/Source/JavaScriptCore/heap/Heap.h

    r290129 r290209  
    256256    v(temporalDurationSpace, cellHeapCellType, TemporalDuration) \
    257257    v(temporalInstantSpace, cellHeapCellType, TemporalInstant) \
     258    v(temporalPlainDateSpace, cellHeapCellType, TemporalPlainDate) \
    258259    v(temporalPlainTimeSpace, cellHeapCellType, TemporalPlainTime) \
    259260    v(temporalTimeZoneSpace, cellHeapCellType, TemporalTimeZone) \
  • trunk/Source/JavaScriptCore/heap/HeapSubspaceTypes.h

    r286347 r290209  
    110110#include "TemporalDuration.h"
    111111#include "TemporalInstant.h"
     112#include "TemporalPlainDate.h"
    112113#include "TemporalPlainTime.h"
    113114#include "TemporalTimeZone.h"
  • trunk/Source/JavaScriptCore/runtime/ISO8601.cpp

    r288272 r290209  
    683683
    684684// https://tc39.es/proposal-temporal/#sec-temporal-isodaysinmonth
    685 static inline unsigned daysInMonth(int32_t year, unsigned month)
     685unsigned daysInMonth(int32_t year, unsigned month)
    686686{
    687687    switch (month) {
     
    988988}
    989989
     990String temporalDateToString(PlainDate plainDate)
     991{
     992    return makeString(pad('0', 4, plainDate.year()), '-', pad('0', 2, plainDate.month()), '-', pad('0', 2, plainDate.day()));
     993}
     994
    990995// IsValidDuration ( years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds )
    991996// https://tc39.es/proposal-temporal/#sec-temporal-isvalidduration
  • trunk/Source/JavaScriptCore/runtime/ISO8601.h

    r288272 r290209  
    285285String formatTimeZoneOffsetString(int64_t);
    286286String temporalTimeToString(PlainTime, std::tuple<Precision, unsigned> precision);
     287String temporalDateToString(PlainDate);
     288unsigned daysInMonth(int32_t year, unsigned month);
    287289
    288290bool isValidDuration(const Duration&);
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp

    r289417 r290209  
    215215#include "TemporalInstantPrototype.h"
    216216#include "TemporalObject.h"
     217#include "TemporalPlainDate.h"
     218#include "TemporalPlainDatePrototype.h"
    217219#include "TemporalPlainTime.h"
    218220#include "TemporalPlainTimePrototype.h"
     
    12681270                TemporalInstantPrototype* instantPrototype = TemporalInstantPrototype::create(init.vm, TemporalInstantPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
    12691271                init.set(TemporalInstant::createStructure(init.vm, globalObject, instantPrototype));
     1272            });
     1273
     1274        m_plainDateStructure.initLater(
     1275            [] (const Initializer<Structure>& init) {
     1276                auto* globalObject = jsCast<JSGlobalObject*>(init.owner);
     1277                auto* plainDatePrototype = TemporalPlainDatePrototype::create(init.vm, globalObject, TemporalPlainDatePrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
     1278                init.set(TemporalPlainDate::createStructure(init.vm, globalObject, plainDatePrototype));
    12701279            });
    12711280
     
    21972206    thisObject->m_durationStructure.visit(visitor);
    21982207    thisObject->m_instantStructure.visit(visitor);
     2208    thisObject->m_plainDateStructure.visit(visitor);
    21992209    thisObject->m_plainTimeStructure.visit(visitor);
    22002210    thisObject->m_timeZoneStructure.visit(visitor);
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r290129 r290209  
    339339    LazyProperty<JSGlobalObject, Structure> m_durationStructure;
    340340    LazyProperty<JSGlobalObject, Structure> m_instantStructure;
     341    LazyProperty<JSGlobalObject, Structure> m_plainDateStructure;
    341342    LazyProperty<JSGlobalObject, Structure> m_plainTimeStructure;
    342343    LazyProperty<JSGlobalObject, Structure> m_timeZoneStructure;
     
    909910    Structure* durationStructure() { return m_durationStructure.get(this); }
    910911    Structure* instantStructure() { return m_instantStructure.get(this); }
     912    Structure* plainDateStructure() { return m_plainDateStructure.get(this); }
    911913    Structure* plainTimeStructure() { return m_plainTimeStructure.get(this); }
    912914    Structure* timeZoneStructure() { return m_timeZoneStructure.get(this); }
  • trunk/Source/JavaScriptCore/runtime/TemporalObject.cpp

    r285730 r290209  
    3636#include "TemporalInstantPrototype.h"
    3737#include "TemporalNow.h"
     38#include "TemporalPlainDateConstructor.h"
     39#include "TemporalPlainDatePrototype.h"
    3840#include "TemporalPlainTimeConstructor.h"
    3941#include "TemporalPlainTimePrototype.h"
     
    7678}
    7779
     80static JSValue createPlainDateConstructor(VM& vm, JSObject* object)
     81{
     82    TemporalObject* temporalObject = jsCast<TemporalObject*>(object);
     83    auto* globalObject = temporalObject->globalObject(vm);
     84    return TemporalPlainDateConstructor::create(vm, TemporalPlainDateConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<TemporalPlainDatePrototype*>(globalObject->plainDateStructure()->storedPrototypeObject()));
     85}
     86
    7887static JSValue createPlainTimeConstructor(VM& vm, JSObject* object)
    7988{
     
    102111  Instant        createInstantConstructor        DontEnum|PropertyCallback
    103112  Now            createNowObject                 DontEnum|PropertyCallback
     113  PlainDate      createPlainDateConstructor      DontEnum|PropertyCallback
    104114  PlainTime      createPlainTimeConstructor      DontEnum|PropertyCallback
    105115  TimeZone       createTimeZoneConstructor       DontEnum|PropertyCallback
  • trunk/Source/JavaScriptCore/runtime/TemporalObject.h

    r290129 r290209  
    2828namespace JSC {
    2929
     30#define JSC_TEMPORAL_PLAIN_DATE_UNITS(macro) \
     31    macro(year, Year) \
     32    macro(month, Month) \
     33    macro(day, Day) \
     34
     35
    3036#define JSC_TEMPORAL_PLAIN_TIME_UNITS(macro) \
    3137    macro(hour, Hour) \
     
    5258#define JSC_COUNT_TEMPORAL_UNITS(name, capitalizedName) + 1
    5359static constexpr unsigned numberOfTemporalUnits = 0 JSC_TEMPORAL_UNITS(JSC_COUNT_TEMPORAL_UNITS);
     60static constexpr unsigned numberOfTemporalPlainDateUnits = 0 JSC_TEMPORAL_PLAIN_DATE_UNITS(JSC_COUNT_TEMPORAL_UNITS);
    5461static constexpr unsigned numberOfTemporalPlainTimeUnits = 0 JSC_TEMPORAL_PLAIN_TIME_UNITS(JSC_COUNT_TEMPORAL_UNITS);
    5562#undef JSC_COUNT_TEMPORAL_UNITS
Note: See TracChangeset for help on using the changeset viewer.