2021-11-24  Michael Catanzaro  <mcatanzaro@gnome.org>

        Skip new stress test get-array-length-reuse.js if memory-limited
        https://bugs.webkit.org/show_bug.cgi?id=233299
        rdar://85502079

        Reviewed by Yusuke Suzuki.

        * stress/get-array-length-reuse.js:

2021-11-24  Aditi Singh  <asingh@igalia.com>

        [JSC] Implement Date.prototype.toTemporalInstant()
        https://bugs.webkit.org/show_bug.cgi?id=232075

        Reviewed by Yusuke Suzuki.

        * stress/date-to-temporal-instant.js: Added.
        (shouldBe):
        (shouldThrow):

2021-11-19  Asumu Takikawa  <asumu@igalia.com>

        Fix WebAssembly memory.fill out of bounds error message
        https://bugs.webkit.org/show_bug.cgi?id=233392

        Reviewed by Yusuke Suzuki.

        * wasm/references/memory_fill_out_of_bounds.js: Added.
        (async test):

2021-11-19  Saam Barati  <sbarati@apple.com>

        Fix assertion added in r285592
        https://bugs.webkit.org/show_bug.cgi?id=233373

        Reviewed by Keith Miller.

        * stress/validate-assert-uid-is-not-index-or-it-is-symbol.js: Added.
        (main.v11):
        (main.v29):
        (main):

2021-11-19  Joseph Griego  <jgriego@igalia.com>

        [JSC] Shadow realms: set correct Function prototype on wrapped functions
        https://bugs.webkit.org/show_bug.cgi?id=233143

        Reviewed by Yusuke Suzuki.

        At present, the Function prototype set on each of the returned wrapped
        functions will be the Function object from the realm the shadow realm
        builtin is from--to comply with the latest draft of the shadow realms
        spec [1], wrapped function objects should have the Function prototype
        from the realm the wrapper object is destined for, instead.

        At present, this requires tracking both the calling (destination) and
        target (source) realm and switching between the two as function
        arguments are wrapped (when the notion of source and destination realm
        also flips)

        Adds a simple builtin (moveFunctionToRealm) that can switch the Function
        prototype given only the Shadow Realm object corresponding to the
        correct global object.

        Also marks the corresponding part of test262 as passing.

        * test262/expectations.yaml:

2021-11-19  Angelos Oikonomopoulos  <angelos@igalia.com>

        [JSC] Workaround for failing mips tests
        https://bugs.webkit.org/show_bug.cgi?id=233359

        Reviewed by Adrian Perez de Castro.

        Re-enable tests skipped on mips after adding workaround.

        * stress/call-varargs-double-new-array-buffer.js:
        * stress/callee-save-fpr.js:
        * stress/forward-varargs-double-new-array-buffer.js:
        * stress/new-array-with-spread-cow-double.js:
        * stress/new-array-with-spread-double-new-array-buffer.js:
        * stress/spread-escapes-but-new-array-buffer-does-not-double.js:

2021-11-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] TypedArray GetArrayLength should not use Reuse
        https://bugs.webkit.org/show_bug.cgi?id=233299
        rdar://85502079

        Reviewed by Robin Morisset.

        * stress/get-array-length-reuse.js: Added.
        (foo):

2021-11-17  Saam Barati  <sbarati@apple.com>

        Run the memmove fast path in JSGenericTypedArrayView<Adaptor>::set when using a combination of Uint8 and Uint8Clamped
        https://bugs.webkit.org/show_bug.cgi?id=233271
        <rdar://85259288>

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/typed-array-set-uint8-and-uint8clamped.js: Added.

2021-11-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use operation path when PutByVal child1 is not speculated as a Cell
        https://bugs.webkit.org/show_bug.cgi?id=233147
        rdar://85344310

        Reviewed by Mark Lam.

        * stress/put-by-val-slow-dfg.js: Added.
        (foo):

2021-11-15  Angelos Oikonomopoulos  <angelos@igalia.com>

        Skip tests newly-failing on mips
        https://bugs.webkit.org/show_bug.cgi?id=233124

        Unreviewed gardening.

        After 3f59d2aa489ec843e055fc3104c275851d7fbd35, these tests started
        failing with a SIGBUS on MIPS (on fuloong hardware, they pass on the
        ci20 boards). Temporarily skip them on this arch until we can track
        down the issue.

        * stress/call-varargs-double-new-array-buffer.js:
        * stress/callee-save-fpr.js:
        * stress/forward-varargs-double-new-array-buffer.js:
        * stress/new-array-with-spread-cow-double.js:
        * stress/new-array-with-spread-double-new-array-buffer.js:
        * stress/spread-escapes-but-new-array-buffer-does-not-double.js:

2021-11-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use CallLinkInfo in LLInt
        https://bugs.webkit.org/show_bug.cgi?id=232746

        Reviewed by Saam Barati.

        * stress/is-callable-in-ftl-needs-to-be-aware-of-proxy.js:
        * stress/sampling-profiler-wasm-name-section.js:
        (platformSupportsSamplingProfiler.vm.isWasmSupported):
        * stress/sampling-profiler-wasm.js:
        (platformSupportsSamplingProfiler.vm.isWasmSupported):
        * stress/sampling-profiler/samplingProfiler.js:
        (doesTreeHaveStackTrace):
        (runTest):
        * wasm/function-tests/nameSection.js:

2021-11-14  Mikhail R. Gadelha  <mikhail@igalia.com>

        Prevent fused multiply add during ParseInt
        https://bugs.webkit.org/show_bug.cgi?id=232951

        Reviewed by Yusuke Suzuki.

        When parsing the string in parseInt, gcc can wrongfully generate
        a fused multiply-add instruction, causing the conversion to be wrong
        for some high values. An add followed by a multiply gives the correct
        result and it is the code generated most of the times.

        This patch adds a volatile qualifier to the number variable, so the
        compiler doesn't try to optimize it, and enables a failing test on
        mips.

        Alternative solutions that I tried but gcc seems to ignore: #pragma
        STDC FP_CONTRACT OFF, compiling with -ffp-contract=off, and setting function
        attributes __attribute__((optimize("fp-contract=off"))) and
        __attribute__((optimize("-ffp-contract=off"))), so volative seems to be
        a good compromise.

        The issue was found when cross compiling to mips with gcc 8.4.0 and
        options -ffp-contract=off -mmadd4.

        * ChakraCore.yaml:

2021-11-12  Joseph Griego  <jgriego@igalia.com>

        [JSC] update test262
        https://bugs.webkit.org/show_bug.cgi?id=233058

        For picking up changes to the ShadowRealms test set.

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        * test262/harness/arrayContains.js: Removed.
        * test262/harness/async-gc.js:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Array/prototype/every/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/filter/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/find/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/findIndex/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/findLast/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/findLastIndex/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/forEach/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/map/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/reduce/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/reduceRight/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/Array/prototype/some/callbackfn-resize-arraybuffer.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/DataView/prototype/byteLength/resizable-array-buffer-auto.js:
        (catch):
        * test262/test/built-ins/DataView/prototype/byteOffset/resizable-array-buffer-auto.js:
        (catch):
        * test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js:
        * test262/test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-cell.js:
        * test262/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-2.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-unicode-match.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-unicode-property-names.js:
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-proto-from-caller-realm.js:
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-from-caller-realm.js: Added.
        (realm.Reflect.construct):
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-on-non-primitive-arguments.js: Added.
        (Symbol.toPrimitive):
        (toString):
        (valueOf):
        (apply):
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-throws-typeerror-on-non-primitive-returns.js: Added.
        (r.evaluate):
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-functions-accepts-callable-objects.js:
        * test262/test/built-ins/SharedArrayBuffer/prototype/prop-desc.js: Added.
        * test262/test/built-ins/Temporal/Duration/compare/calendar-fields-iterable.js:
        * test262/test/built-ins/Temporal/Duration/compare/relativeto-string-zoneddatetime-wrong-offset.js: Added.
        * test262/test/built-ins/Temporal/Duration/compare/relativeto-sub-minute-offset.js: Added.
        * test262/test/built-ins/Temporal/Duration/prototype/add/calendar-fields-iterable.js:
        * test262/test/built-ins/Temporal/Duration/prototype/add/relativeto-propertybag-no-time-units.js: Added.
        (const.result.instance.add.new.Temporal.Duration):
        * test262/test/built-ins/Temporal/Duration/prototype/add/relativeto-string-zoneddatetime-wrong-offset.js: Added.
        (instance.add.new.Temporal.Duration):
        * test262/test/built-ins/Temporal/Duration/prototype/add/relativeto-sub-minute-offset.js: Added.
        (const.result.instance.add.new.Temporal.Duration):
        (instance.add.new.Temporal.Duration):
        * test262/test/built-ins/Temporal/Duration/prototype/round/calendar-fields-iterable.js:
        * test262/test/built-ins/Temporal/Duration/prototype/round/relativeto-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/Duration/prototype/round/relativeto-string-zoneddatetime-wrong-offset.js: Added.
        * test262/test/built-ins/Temporal/Duration/prototype/round/relativeto-sub-minute-offset.js: Added.
        * test262/test/built-ins/Temporal/Duration/prototype/subtract/calendar-fields-iterable.js:
        * test262/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-propertybag-no-time-units.js: Added.
        (const.result.instance.subtract.new.Temporal.Duration):
        * test262/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-string-zoneddatetime-wrong-offset.js: Added.
        (instance.subtract.new.Temporal.Duration):
        * test262/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-sub-minute-offset.js: Added.
        (const.result.instance.subtract.new.Temporal.Duration):
        (instance.subtract.new.Temporal.Duration):
        * test262/test/built-ins/Temporal/Duration/prototype/total/calendar-fields-iterable.js:
        * test262/test/built-ins/Temporal/Duration/prototype/total/relativeto-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/Duration/prototype/total/relativeto-string-zoneddatetime-wrong-offset.js: Added.
        * test262/test/built-ins/Temporal/Duration/prototype/total/relativeto-sub-minute-offset.js: Added.
        * test262/test/built-ins/Temporal/Instant/prototype/toString/timezone-offset.js: Added.
        (test):
        * test262/test/built-ins/Temporal/Instant/prototype/toString/timezone-string-datetime.js:
        * test262/test/built-ins/Temporal/Instant/prototype/toString/timezone.js:
        * test262/test/built-ins/Temporal/PlainDate/prototype/since/largestunit-higher-units.js:
        * test262/test/built-ins/Temporal/PlainDate/prototype/toPlainDateTime/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainDate/prototype/toZonedDateTime/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainDateTime/prototype/withPlainTime/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainTime/compare/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainTime/from/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainTime/prototype/equals/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainTime/prototype/since/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/PlainTime/prototype/until/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/basic.js: Added.
        (test):
        * test262/test/built-ins/Temporal/ZonedDateTime/from/zoneddatetime-sub-minute-offset.js: Added.
        (string_appeared_here.forEach):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/equals/sub-minute-offset.js: Added.
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/getISOFields/offset.js: Added.
        (test):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/offset/basic.js: Added.
        (test):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/since/sub-minute-offset.js: Added.
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/toJSON/balance-negative-time-units.js:
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/toJSON/offset.js: Added.
        (test):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/toString/balance-negative-time-units.js:
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/toString/offset.js: Added.
        (test):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/until/sub-minute-offset.js: Added.
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/with/offset-property-sub-minute.js: Added.
        (string_appeared_here.forEach):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/with/receiver-offset-broken.js: Added.
        (ObservedCalendar):
        (ObservedCalendar.prototype.toString):
        (ObservedCalendar.prototype.mergeFields):
        (ObservedCalendar.prototype.resetCalls):
        * test262/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/plaintime-propertybag-no-time-units.js: Added.
        * test262/test/built-ins/Temporal/getOwnPropertyNames.js:
        * test262/test/built-ins/TypedArray/prototype/every/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/filter/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/find/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/findIndex/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/findLast/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/findLastIndex/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/forEach/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/map/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/reduce/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/reduceRight/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/some/callbackfn-resize.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js:
        * test262/test/harness/arrayContains.js: Removed.
        * test262/test/harness/testTypedArray.js:
        * test262/test/intl402/Collator/prototype/resolvedOptions/order.js:
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-dayPeriod.js:
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-fractionalSecondDigits.js:
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-style.js:
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order.js:
        * test262/test/intl402/ListFormat/prototype/resolvedOptions/order.js:
        * test262/test/intl402/NumberFormat/constructor-options-roundingMode-invalid.js: Added.
        (brokenToString.toString):
        * test262/test/intl402/NumberFormat/constructor-options-throwing-getters-rounding-mode.js: Added.
        (get roundingMode):
        * test262/test/intl402/NumberFormat/constructor-signDisplay-negative.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-ceil.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-expand.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-floor.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-ceil.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-even.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-expand.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-floor.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-half-trunc.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-rounding-mode-trunc.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-de-DE.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-en-US.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-ja-JP.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-ko-KR.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-currency-zh-TW.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-de-DE.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-en-US.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-ja-JP.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-ko-KR.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-negative-zh-TW.js: Added.
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-de-DE.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-en-US.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-ja-JP.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-ko-KR.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-currency-zh-TW.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-de-DE.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-en-US.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-ja-JP.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-ko-KR.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-negative-zh-TW.js: Added.
        (verifyFormatParts):
        (verifyFormatParts.nf.formatToParts):
        * test262/test/intl402/NumberFormat/prototype/resolvedOptions/order.js:
        * test262/test/intl402/NumberFormat/prototype/resolvedOptions/roundingMode.js: Added.
        * test262/test/intl402/PluralRules/prototype/resolvedOptions/order.js:
        * test262/test/intl402/RelativeTimeFormat/prototype/resolvedOptions/order.js:
        * test262/test/intl402/Segmenter/prototype/resolvedOptions/order.js:
        * test262/test/language/block-scope/syntax/for-in/acquire-properties-from-array.js:
        * test262/test/language/block-scope/syntax/for-in/acquire-properties-from-object.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code.js:
        * test262/test/language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code.js:
        * test262/test262-Revision.txt:

2021-11-12  Guillaume Emont  <guijemont@igalia.com>

        Unskip typeProfiler/getter-richards.js on armv7
        https://bugs.webkit.org/show_bug.cgi?id=233050

        Unreviewed gardening.

        Our arm bots are now fast enough to run this, it does still timeout on
        some of our test mips devices though.

        * typeProfiler/getter-richards.js:

2021-11-12  Xan Lopez  <xan@igalia.com>

        [JSC][32bit] Unskip JSTests/microbenchmarks/redefine-property-accessor-dictionary.js
        https://bugs.webkit.org/show_bug.cgi?id=233034

        Unreviewed gardening.

        This is skipped for memoryLimited *and* mips|arm systems, but a)
        seems to run fine on both setups and b) is almost identical to the
        other tests/benchmarks that landed in the same patch, that do not
        have that limitation. Optimistically remove the skip and let's see
        if it sticks.

        * microbenchmarks/redefine-property-accessor-dictionary.js:

2021-11-11  Michael Saboff  <msaboff@apple.com>

        Inline RegExp.test JIT code in DFG and FTL
        https://bugs.webkit.org/show_bug.cgi?id=230469

        Reviewed by Saam Barati.

        New microbenchmark.

        * microbenchmarks/regexp-test-inlined.js: Added.

2021-11-10  Saam Barati  <sbarati@apple.com>

        in_by_val should not constant fold to in_by_id when the property is a property index
        https://bugs.webkit.org/show_bug.cgi?id=232753

        Reviewed by Yusuke Suzuki.

        * stress/dont-in-by-id-when-index-2.js: Added.
        (assert):
        (main.v179):
        (main.async v244):
        (main):
        * stress/dont-in-by-id-when-index.js: Added.
        (assert):
        (test):

2021-11-10  Xan Lopez  <xan@igalia.com>

        [JSC][32bit] Unskip JSTests/stress/json-stringify-string-builder-overflow.js
        https://bugs.webkit.org/show_bug.cgi?id=232944

        Unreviewed gardening.

        This seems to survive 1000 iterations on both armv7 and mips
        hw. Remove the arch-specific skips leaving the memory limited
        ones.

        * stress/json-stringify-string-builder-overflow.js:

2021-11-09  Saam Barati  <sbarati@apple.com>

        When inlining NewSymbol in the DFG don't universally call ToString on the input
        https://bugs.webkit.org/show_bug.cgi?id=232754

        Reviewed by Robin Morisset.

        * stress/inline-new-symbol-dfg-undefined-first-arg.js: Added.
        (assert):
        (foo):

2021-11-09  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unskip array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg on ARM
        https://bugs.webkit.org/show_bug.cgi?id=232811

        Unreviewed gardening.

        Gate the number of iterations adjustment on $memoryLimited instead of
        the arch.

        * stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js:

2021-11-09  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unskip deltablue-for-of.js on arm and mips
        https://bugs.webkit.org/show_bug.cgi?id=227291

        Unreviewed gardening.

        The test is not crashing but timeouts because of the number of
        iterations. So to enable testing in more archs, we reduced the
        number of iterations and constraints.

        * typeProfiler/deltablue-for-of.js:
        (deltaBlue):

2021-11-09  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unskip microbenchmarks/memcpy-typed-loop.js on arm/mips
        https://bugs.webkit.org/show_bug.cgi?id=232813

        Unreviewed gardening.

        Can't reproduce this any more.
        * microbenchmarks/memcpy-typed-loop.js:

2021-11-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement IntlNumberFormat v3
        https://bugs.webkit.org/show_bug.cgi?id=215438

        Reviewed by Ross Kirsling.

        * stress/intl-numberformat-format-large.js: Added.
        (shouldBe):
        * stress/intl-numberformat-format-range-v3.js: Added.
        (shouldBe):
        (shouldThrow):
        (shouldNotThrow):
        (nf.formatRange.string_appeared_here.forEach):
        (nf.formatRangeToParts.validRanges.forEach):
        (nf6.formatRange.shouldThrow):
        * stress/intl-numberformat-format-string-v3.js: Added.
        (shouldBe):
        * stress/intl-numberformat-format-string.js: Added.
        (shouldBe):
        * stress/intl-numberformat-format-to-parts.js:
        * stress/intl-numberformat-rounding-increment-resolved-match-v3.js: Added.
        (shouldBe):
        (validRoundingIncrements.forEach):
        * stress/intl-numberformat-rounding-increment-v3.js: Added.
        (shouldThrow):
        (validRoundingIncrements.forEach):
        (invalidRoundingIncrements.forEach):
        * stress/intl-numberformat-rounding-increment-value-hanidec.js: Added.
        (shouldBe):
        * stress/intl-numberformat-rounding-increment-value-v3.js: Added.
        (shouldBe):
        * stress/intl-numberformat-rounding-increment-value.js: Added.
        (shouldBe):
        * stress/intl-numberformat-rounding-mode-table-v3.js: Added.
        (shouldBe):
        (Object.keys.expectations.forEach):
        * stress/intl-numberformat-rounding-mode-v3.js: Added.
        (shouldBe):
        (shouldThrow):
        (validRoundingMode.forEach):
        (invalidRoundingMode.forEach):
        (let.options.get signDisplay):
        (let.options.get roundingMode):
        * stress/intl-numberformat-sign-display-v3.js: Added.
        (shouldBe):
        * stress/intl-numberformat-trailing-zero-display-resolved-options-v3.js: Added.
        (shouldBe):
        * stress/intl-numberformat-trailing-zero-display-v3.js: Added.
        (shouldBe):
        * stress/intl-numberformat-usegrouping-v3.js: Added.
        (shouldBe):
        (shouldThrow):
        (validUseGrouping.forEach):
        (invalidUseGrouping.forEach):
        (all.forEach):
        (mgd1.forEach):
        (mgd2.forEach):
        * stress/intl-numberformat.js:
        (testNumberFormat):
        (shouldBe.testNumberFormat.Intl.NumberFormat):
        * stress/intl-pluralrules-selectrange.js: Added.
        (shouldBe):
        * test262/config.yaml:

2021-11-08  Saam Barati  <sbarati@apple.com>

        We need to PreferNumber when calling toPrimitive for negate
        https://bugs.webkit.org/show_bug.cgi?id=232679

        Reviewed by Alexey Shvayka.

        * stress/negate-prefer-number-to-primitive.js

2021-11-05  Russell Epstein  <repstein@apple.com>

        Cherry-pick r284635. rdar://problem/85039977

    [JSC] Inserted GetTypedArrayLengthAsInt52 for PutByVal should have NodeResultInt52
    https://bugs.webkit.org/show_bug.cgi?id=232059
    
    Reviewed by Saam Barati.
    
    JSTests:
    
    * stress/inserted-gettypedarraylengthasint52-should-have-int52-result-for-put-by-val.js: Added.
    (foo.bar):
    (foo):
    
    Source/JavaScriptCore:
    
    When inserting GetTypedArrayLengthAsInt52 after fixup phase, we must set NodeResultInt52.
    
    * dfg/DFGSSALoweringPhase.cpp:
    (JSC::DFG::SSALoweringPhase::handleNode):
    
    
    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@284635 268f45cc-cd09-0410-ab3c-d52691b4dbfc

    2021-10-21  Yusuke Suzuki  <ysuzuki@apple.com>

            [JSC] Inserted GetTypedArrayLengthAsInt52 for PutByVal should have NodeResultInt52
            https://bugs.webkit.org/show_bug.cgi?id=232059

            Reviewed by Saam Barati.

            * stress/inserted-gettypedarraylengthasint52-should-have-int52-result-for-put-by-val.js: Added.
            (foo.bar):
            (foo):

2021-11-04  Alexey Shvayka  <ashvayka@apple.com>

        We need to PreferNumber when calling toPrimitive for coercion to BigInt
        https://bugs.webkit.org/show_bug.cgi?id=232720

        Reviewed by Saam Barati.

        * stress/big-int-constructor.js:
        * stress/bigint-asintn.js:
        * stress/bigint-asuintn.js:

2021-11-04  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unskip tests disabled because of the recent 32 bits issues
        https://bugs.webkit.org/show_bug.cgi?id=230490

        Unreviewed gardening.

        * ChakraCore.yaml:

2021-11-02  Philip Chimento  <pchimento@igalia.com>

        [JSC] Implement Temporal.Instant
        https://bugs.webkit.org/show_bug.cgi?id=229826

        Reviewed by Yusuke Suzuki.

        * stress/temporal-instant.js: Added.
        (shouldBe):
        (shouldNotBe):
        (shouldThrow):
        (instants.forEach):
        (shouldThrow.new.Temporal.Instant):
        (const.maxValue.new.Temporal.Instant):
        (shouldBe.epoch.subtract):
        * test262/config.yaml: No need to ignore all Temporal.Instant tests
          anymore, only the ones for the unimplemented methods.

2021-11-02  Saam Barati  <sbarati@apple.com>

        EnumeratorGetByVal for IndexedMode+OwnStructureMode doesn't always recover the property name
        https://bugs.webkit.org/show_bug.cgi?id=231321
        <rdar://problem/84211697>

        Reviewed by Yusuke Suzuki.

        * stress/enumerator-get-by-val-needs-to-recover-property-name.js: Added.

2021-11-01  Saam Barati  <sbarati@apple.com>

        ArrayBuffer species watchpoint being invalidated doesn't mean it's not an ArrayBuffer constructor from the same global object
        https://bugs.webkit.org/show_bug.cgi?id=231322
        <rdar://problem/84212078>

        Reviewed by Yusuke Suzuki.

        * stress/array-buffer-species-watchpoint-should-not-dictate-if-constructor-is-correct.js: Added.
        (main.async v23):
        (main):

2021-11-01  Robin Morisset  <rmorisset@apple.com>

        JSGenericTypedArrayView<Adaptor>::set crashes if the length + objectOffset is > UINT32_MAX
        https://bugs.webkit.org/show_bug.cgi?id=231975
        rdar://84402043

        Reviewed by Yusuke Suzuki.

        - regress-84402043 is the testcase that revealed the problem.
        - typed-array-set-large(-offset) test the same function, in the typed-array to typed-array case
        - typed-array-large-slice tests the only caller that passes a non-0 objectOffset, and found other issues with it
        - typed-array-large-oob-eventually-not.js is just another test of the Wasm4GB change that I had forgotten to commit

        * stress/regress-84402043.js: Added.
        * stress/typed-array-large-oob-eventually-not.js: Added.
        (test):
        * stress/typed-array-large-slice.js: Added.
        (expect):
        * stress/typed-array-set-large-offset.js: Added.
        * stress/typed-array-set-large.js: Added.

2021-10-29  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reduce # of iterations in stress/validate-int-52-ai-state.js due to Debug timeout

        * stress/validate-int-52-ai-state.js:

2021-10-29  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, skip stress/unlinked-code-block-destructor.js when it is debug build

        The bug was not related to Debug build. And it is timing out on Debug build due to
        heavy test load.

        * stress/unlinked-code-block-destructor.js:

2021-10-29  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reduce # of iteration since it is timing out on Debug JSC bot

        * stress/put-private-name-ic-write-barrier.js:
        (PutPrivateNameIC):

2021-10-29  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-Function-References] Add support for (ref.null heaptype)
        https://bugs.webkit.org/show_bug.cgi?id=229707

        Reviewed by Yusuke Suzuki.

        Added spec tests for (ref.null $t) : https://github.com/WebAssembly/function-references/blob/master/test/core/ref_null.wast.

        * wasm.yaml:
        * wasm/function-references-spec-tests/call_ref.wast.js:
        * wasm/function-references-spec-tests/ref_null.wast.js: Added.

2021-10-27  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-Function-References] Add call_ref spec tests
        https://bugs.webkit.org/show_bug.cgi?id=229710

        Reviewed by Yusuke Suzuki.
        
        Add tests for call_ref instruction from the spec repo:
        https://github.com/WebAssembly/function-references/blob/master/test/core/call_ref.wast.
        Also added tests for Funcref/Externref in Wasm tables and globals to test
        new internal representation of Funcref = (ref null funcref).
        
        * wasm.yaml:
        * wasm/function-references-spec-tests/call_ref.wast.js: Added.
        * wasm/function-references/ref_types.js:
        (async testRefGlobalCheck):
        (async testNonNullExternrefIncompatible):
        (async testNonNullFuncrefIncompatible):
        (async testWasmJSGlobals):
        (async testRefTypesInTables):
        * wasm/wasm.json:

2021-10-26  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreivewed, fix CLoop build and test failure

        CLoop is running Yarr interpreter instead of Yarr JIT.

        * mozilla/ecma_3/RegExp/regress-85721.js:

2021-10-26  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, fix test262 bot failures
        https://bugs.webkit.org/show_bug.cgi?id=232005

        * test262/expectations.yaml:

2021-10-25  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Don't branch around register allocation in DFG enumerator get by val
        https://bugs.webkit.org/show_bug.cgi?id=232260
        rdar://84544469

        Reviewed by Robin Morisset.

        * stress/dont-branch-around-regalloc-enumerator-get-by-val-float.js: Added.
        (foo):

2021-10-24  Alexey Shvayka  <ashvayka@apple.com>

        InternalFunction::createSubclassStructure() should use prototype's global object
        https://bugs.webkit.org/show_bug.cgi?id=231874

        Reviewed by Yusuke Suzuki.

        * stress/internal-function-subclass-structure-realm.js: Added.

2021-10-23  Phillip Mates  <pmates@igalia.com>

        update test262
        https://bugs.webkit.org/show_bug.cgi?id=232005

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Array/prototype/concat/Array.prototype.concat_large-typed-array.js:
        (concatTypedArray):
        * test262/test/built-ins/Array/prototype/concat/Array.prototype.concat_small-typed-array.js:
        (concatTypedArray):
        * test262/test/built-ins/Array/prototype/copyWithin/non-negative-target-and-start.js:
        * test262/test/built-ins/Function/internals/Call/class-ctor-realm.js:
        * test262/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-44.js:
        * test262/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-49.js:
        * test262/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-2.js:
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/globalthis-available-properties.js: Added.
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/globalthis-config-only-properties.js: Added.
        (const.remainingNames.names.filter.name.esNonConfigValues.includes):
        (hasOwn.call):
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/globalthis-orginary-object.js: Added.
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/throws-error-from-ctor-realm.js: Added.
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/validates-realm-object.js:
        * test262/test/built-ins/ShadowRealm/prototype/evaluate/wrapped-function-proto-from-caller-realm.js:
        (checkArgWrapperFn.realm.evaluate.string_appeared_here.assert.sameValue.checkArgWrapperFn):
        * test262/test/built-ins/ShadowRealm/prototype/importValue/not-constructor.js:
        * test262/test/built-ins/Temporal/PlainDate/prototype/since/largestunit-higher-units.js:
        * test262/test/built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/basic.js:
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-currency-de-DE.js:
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-currency-ko-KR.js:
        * test262/test/intl402/NumberFormat/prototype/format/signDisplay-currency-zh-TW.js:
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-currency-de-DE.js:
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-currency-en-US.js:
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-currency-ja-JP.js:
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-currency-ko-KR.js:
        * test262/test/intl402/NumberFormat/prototype/formatToParts/signDisplay-currency-zh-TW.js:
        * test262/test/intl402/Temporal/Instant/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/Instant/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/Instant/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/Instant/prototype/toLocaleString/options-undefined.js.
        * test262/test/intl402/Temporal/PlainDate/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainDate/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/PlainDate/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainDate/prototype/toLocaleString/options-undefined.js.
        * test262/test/intl402/Temporal/PlainDateTime/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainDateTime/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/PlainDateTime/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainDateTime/prototype/toLocaleString/options-undefined.js.
        * test262/test/intl402/Temporal/PlainMonthDay/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/PlainMonthDay/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainMonthDay/prototype/toLocaleString/options-undefined.js.
        * test262/test/intl402/Temporal/PlainTime/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainTime/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/PlainTime/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainTime/prototype/toLocaleString/options-undefined.js.
        * test262/test/intl402/Temporal/PlainYearMonth/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/PlainYearMonth/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/PlainYearMonth/prototype/toLocaleString/options-undefined.js.
        * test262/test/intl402/Temporal/ZonedDateTime/prototype/toLocaleString/locales-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/locales-undefined.js.
        * test262/test/intl402/Temporal/ZonedDateTime/prototype/toLocaleString/options-undefined.js: Renamed from JSTests/test262/test/built-ins/Temporal/ZonedDateTime/prototype/toLocaleString/options-undefined.js.
        * test262/test/language/computed-property-names/basics/number.js:
        * test262/test/language/computed-property-names/basics/string.js:
        * test262/test/language/computed-property-names/basics/symbol.js:
        * test262/test/language/computed-property-names/class/method/generator.js:
        * test262/test/language/computed-property-names/class/method/number.js:
        * test262/test/language/computed-property-names/class/method/string.js:
        * test262/test/language/computed-property-names/class/method/symbol.js:
        * test262/test/language/computed-property-names/object/method/generator.js:
        * test262/test/language/computed-property-names/object/method/number.js:
        * test262/test/language/computed-property-names/object/method/string.js:
        * test262/test/language/computed-property-names/object/method/symbol.js:
        * test262/test/language/computed-property-names/to-name-side-effects/numbers-object.js:
        * test262/test/language/computed-property-names/to-name-side-effects/object.js:
        * test262/test/language/identifiers/part-unicode-14.0.0-escaped.js: Added.
        * test262/test/language/identifiers/part-unicode-14.0.0.js: Added.
        * test262/test/language/identifiers/start-unicode-14.0.0-escaped.js: Added.
        * test262/test/language/identifiers/start-unicode-14.0.0.js: Added.
        * test262/test/language/rest-parameters/arrow-function.js:
        * test262/test/language/rest-parameters/no-alias-arguments.js:
        (f):
        * test262/test/language/rest-parameters/with-new-target.js:
        (Base):
        (Child):
        * test262/test/language/statements/class/definition/fn-length-static-precedence-order.js:
        * test262/test/language/statements/class/definition/fn-name-static-precedence-order.js:
        * test262/test/language/statements/class/static-init-arguments-functions.js:
        * test262/test/language/statements/class/static-init-arguments-methods.js:
        * test262/test/language/statements/class/subclass/builtin-objects/Array/contructor-calls-super-multiple-arguments.js:
        * test262/test/language/statements/class/subclass/builtin-objects/Array/regular-subclassing.js:
        * test262/test262-Revision.txt:

2021-10-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] GetTypedArrayLengthAsInt52 must be inserted only when we ensure that input is TypedArray via array-mode-based filtering
        https://bugs.webkit.org/show_bug.cgi?id=232168
        rdar://84366658

        Reviewed by Robin Morisset.

        * stress/gettypedarraylengthasint52-must-be-emitted-for-typedarray.js: Added.
        (foo):

2021-10-22  Asumu Takikawa  <asumu@igalia.com>

        Change WebAssembly module import linking time to evaluate step.
        https://bugs.webkit.org/show_bug.cgi?id=231114

        Reviewed by Yusuke Suzuki.

        Added test cases based on Wasm/ESM proposal examples from:

          https://github.com/WebAssembly/esm-integration/blob/main/proposals/esm-integration/EXAMPLES.md

        The new tests cases cover the bindings made for both JS<->Wasm
        and Wasm<->JS cyclic module cases, and importing values from JS
        into Wasm modules. The tests do not cover importing memory values
        as this does not work yet.

        * wasm/modules/wasm-js-cycle.js:
        * wasm/modules/wasm-js-cycle/entry-global.wasm:
        * wasm/modules/wasm-js-cycle/entry-global.wat:
        * wasm/modules/wasm-js-cycle/entry-table.wasm:
        * wasm/modules/wasm-js-cycle/entry-table.wat:
        * wasm/modules/wasm-js-cycle/global.js:
        (from.string_appeared_here.export.incrementGlobal): Deleted.
        * wasm/modules/wasm-js-cycle/table.js:
        (from.string_appeared_here.export.setTable): Deleted.

        * wasm/modules/js-wasm-cycle.js:
        (then):
        * wasm/modules/js-wasm-cycle/entry-function.js: Added.
        (f):
        * wasm/modules/js-wasm-cycle/entry-i32-global.js: Added.
        * wasm/modules/js-wasm-cycle/entry-i32-value.js: Added.
        * wasm/modules/js-wasm-cycle/entry-memory.js: Added.
        * wasm/modules/js-wasm-cycle/entry-table.js: Added.
        * wasm/modules/js-wasm-cycle/entry-wasm-global.js: Added.
        (f):
        * wasm/modules/js-wasm-cycle/entry-wasm-memory.js: Added.
        (f):
        * wasm/modules/js-wasm-cycle/entry-wasm-table.js: Added.
        (f):
        * wasm/modules/js-wasm-cycle/function.wasm: Added.
        * wasm/modules/js-wasm-cycle/function.wat: Added.
        * wasm/modules/js-wasm-cycle/i32-global.wasm: Added.
        * wasm/modules/js-wasm-cycle/i32-global.wat: Added.
        * wasm/modules/js-wasm-cycle/i32-value.wasm: Added.
        * wasm/modules/js-wasm-cycle/i32-value.wat: Added.
        * wasm/modules/js-wasm-cycle/memory.wasm: Added.
        * wasm/modules/js-wasm-cycle/memory.wat: Added.
        * wasm/modules/js-wasm-cycle/table.wasm: Added.
        * wasm/modules/js-wasm-cycle/table.wat: Added.
        * wasm/modules/js-wasm-cycle/wasm-global.wasm: Added.
        * wasm/modules/js-wasm-cycle/wasm-global.wat: Added.
        * wasm/modules/js-wasm-cycle/wasm-memory.wasm: Added.
        * wasm/modules/js-wasm-cycle/wasm-memory.wat: Added.
        * wasm/modules/js-wasm-cycle/wasm-table.wasm: Added.
        * wasm/modules/js-wasm-cycle/wasm-table.wat: Added.
        * wasm/modules/wasm-imports-js-exports.js:
        * wasm/modules/wasm-imports-js-exports/global.js: Added.
        * wasm/modules/wasm-imports-js-exports/global.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/global.wat: Added.
        * wasm/modules/wasm-imports-js-exports/table.js: Added.
        * wasm/modules/wasm-imports-js-exports/table.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/table.wat: Added.
        * wasm/modules/wasm-js-cycle.js:
        * wasm/modules/wasm-js-cycle/entry-global.wasm: Added.
        * wasm/modules/wasm-js-cycle/entry-global.wat: Added.
        * wasm/modules/wasm-js-cycle/entry-memory.wasm: Added.
        * wasm/modules/wasm-js-cycle/entry-memory.wat: Added.
        * wasm/modules/wasm-js-cycle/entry-table.wasm: Added.
        * wasm/modules/wasm-js-cycle/entry-table.wat: Added.
        * wasm/modules/wasm-js-cycle/global.js: Added.
        (export.incrementGlobal):
        * wasm/modules/wasm-js-cycle/memory.js: Added.
        (from.string_appeared_here.export.setMemory):
        * wasm/modules/wasm-js-cycle/table.js: Added.
        (export.setTable):

2021-10-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Inserted GetTypedArrayLengthAsInt52 for PutByVal should have NodeResultInt52
        https://bugs.webkit.org/show_bug.cgi?id=232059

        Reviewed by Saam Barati.

        * stress/inserted-gettypedarraylengthasint52-should-have-int52-result-for-put-by-val.js: Added.
        (foo.bar):
        (foo):

2021-10-18  Phillip Mates  <pmates@igalia.com>

        Test coverage for JSC shadow realms implementation
        https://bugs.webkit.org/show_bug.cgi?id=230602

        Reviewed by Yusuke Suzuki.

        * modules/import-meta-syntax.js:
        (shouldThrow):
        * stress/eval-indirect.js: Added.
        (shouldBe):
        (shouldThrow):
        * stress/import-syntax.js:
        * stress/resources/shadow-realm-example-module.js: Added.
        (putInGlobal):
        (getFromGlobal):
        (getAnObject):
        (getCallCount):
        * stress/shadow-realm-evaluate.js: Added.
        (shouldBe):
        (shouldThrow):
        (assertionFn):
        (shouldBe.String):
        (shouldBe.globalObjectFor.doEval):
        (shouldBe.globalObjectFor):
        * stress/shadow-realm-import-value.js: Added.
        (shouldBe):
        (shouldThrow):
        (async shouldThrowAsync):
        (async const):
        (doImport):
        * stress/shadow-realm.js: Added.
        (shouldBe):
        (throw.new.Error):
        * test262/config.yaml:

2021-10-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] PutByVal's child5 should be KnownInt32Use / Int52RepUse in FTL
        https://bugs.webkit.org/show_bug.cgi?id=231884
        rdar://84357099

        Reviewed by Robin Morisset.

        * stress/put-by-val-known-int32.js: Added.
        (new.Uint8Array.1000000.map):

2021-10-16  Robin Morisset  <rmorisset@apple.com>

        Allow WASM to use up to 4GB
        https://bugs.webkit.org/show_bug.cgi?id=229353
        rdar://81603447

        Reviewed by Yusuke Suzuki.

        The big-wasm-memory/wasm-memory-requested... tests used to simply expect an OOM at 2GB.
        They now expect success at 4GB, and failure at 4GB+1.
        The exceptions they expect are now more specific, as previously there was a rounding issue that was causing the specific exceptions not to be thrown (resulting in the generic OOM exception later in the code).
        Finally I made them only run on 64-bit platforms since we don't support typed arrays >=2GB on 32-bits, and I made them only run in one configuration since they can take a little bit of time.

        I also added a few new tests, specifically checking our handling of large typed arrays, and especially of indices above INT32_MAX.

        * stress/big-wasm-memory-grow-no-max.js:
        (test):
        * stress/big-wasm-memory-grow.js:
        (test):
        * stress/big-wasm-memory.js:
        (test):
        * stress/typed-array-always-large.js: Added.
        (getArrayLength):
        (getByVal):
        (putByVal):
        (test):
        * stress/typed-array-eventually-large.js: Added.
        (getArrayLength):
        (getByVal):
        (putByVal):
        (test):
        * stress/typed-array-large-eventually-oob.js: Added.
        (getArrayLength):
        (getByVal):
        (putByVal):
        (test):
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js:
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js:

2021-10-15  Robin Morisset  <rmorisset@apple.com>

        Revert r284230, my last fixes to the watch build make it break tests
        https://bugs.webkit.org/show_bug.cgi?id=231797

        Unreviewed.

        * stress/big-wasm-memory-grow-no-max.js:
        (test):
        * stress/big-wasm-memory-grow.js:
        (test):
        * stress/big-wasm-memory.js:
        (test):
        * stress/typed-array-always-large.js: Removed.
        (getArrayLength): Deleted.
        (getByVal): Deleted.
        (putByVal): Deleted.
        (test): Deleted.
        * stress/typed-array-eventually-large.js: Removed.
        (getArrayLength): Deleted.
        (getByVal): Deleted.
        (putByVal): Deleted.
        (test): Deleted.
        * stress/typed-array-large-eventually-oob.js: Removed.
        (getArrayLength): Deleted.
        (getByVal): Deleted.
        (putByVal): Deleted.
        (test): Deleted.
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js:
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js:

2021-10-14  Robin Morisset  <rmorisset@apple.com>

        Allow WASM to use up to 4GB
        https://bugs.webkit.org/show_bug.cgi?id=229353
        rdar://81603447

        Reviewed by Yusuke Suzuki.

        The big-wasm-memory/wasm-memory-requested... tests used to simply expect an OOM at 2GB.
        They now expect success at 4GB, and failure at 4GB+1.
        The exceptions they expect are now more specific, as previously there was a rounding issue that was causing the specific exceptions not to be thrown (resulting in the generic OOM exception later in the code).
        Finally I made them only run on 64-bit platforms since we don't support typed arrays >=2GB on 32-bits, and I made them only run in one configuration since they can take a little bit of time.

        I also added a few new tests, specifically checking our handling of large typed arrays, and especially of indices above INT32_MAX.

        * stress/big-wasm-memory-grow-no-max.js:
        (test):
        * stress/big-wasm-memory-grow.js:
        (test):
        * stress/big-wasm-memory.js:
        (test):
        * stress/typed-array-always-large.js: Added.
        (getArrayLength):
        (getByVal):
        (putByVal):
        (test):
        * stress/typed-array-eventually-large.js: Added.
        (getArrayLength):
        (getByVal):
        (putByVal):
        (test):
        * stress/typed-array-large-eventually-oob.js: Added.
        (getArrayLength):
        (getByVal):
        (putByVal):
        (test):
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js:
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js:

2021-10-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r284151.
        https://bugs.webkit.org/show_bug.cgi?id=231740

        WTR

        Reverted changeset:

        "Test coverage for JSC shadow realms implementation"
        https://bugs.webkit.org/show_bug.cgi?id=230602
        https://commits.webkit.org/r284151

2021-10-14  Phillip Mates  <pmates@igalia.com>

        Test coverage for JSC shadow realms implementation
        https://bugs.webkit.org/show_bug.cgi?id=230602

        Reviewed by Yusuke Suzuki.

        * modules/import-meta-syntax.js:
        (shouldThrow):
        * stress/eval-indirect.js: Added.
        (shouldBe):
        (shouldThrow):
        * stress/import-syntax.js:
        * stress/resources/shadow-realm-example-module.js: Added.
        (putInGlobal):
        (getFromGlobal):
        (getAnObject):
        (getCallCount):
        * stress/shadow-realm-evaluate.js: Added.
        (shouldBe):
        (shouldThrow):
        (assertionFn):
        (shouldBe.String):
        (shouldBe.globalObjectFor.doEval):
        (shouldBe.globalObjectFor):
        * stress/shadow-realm-import-value.js: Added.
        (shouldBe):
        (shouldThrow):
        (async shouldThrowAsync):
        (async const):
        (doImport):
        * stress/shadow-realm.js: Added.
        (shouldBe):
        (throw.new.Error):
        * test262/config.yaml:

2021-10-11  Saam Barati  <sbarati@apple.com>

        Don't branch around register allocation in DFG enumerator get by val and pass in the right LValue type to strictInt52ToJSValue
        https://bugs.webkit.org/show_bug.cgi?id=231465
        <rdar://83876470>

        Reviewed by Yusuke Suzuki.

        * stress/dont-branch-around-regalloc-enumerator-get-by-val.js: Added.
        (foo):

2021-10-09  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Refine RegExp#compile based on regexp-legacy-features proposal
        https://bugs.webkit.org/show_bug.cgi?id=231486

        Reviewed by Alexey Shvayka.

        * stress/regexp-recompile.js: Added.
        (shouldBe):
        (recompile):
        (target):
        * test262/expectations.yaml:

2021-10-08  Tadeu Zagallo  <tzagallo@apple.com>

        Implement the WebAssembly exception handling proposal
        https://bugs.webkit.org/show_bug.cgi?id=229681
        <rdar://81603387>

        Reviewed by Keith Miller.

        Add new tests for the exception handling and import a set of tests used by V8 into wasm/v8.

        * wasm.yaml:
        * wasm/Builder.js:
        (const._importExceptionContinuation.type.Import.field):
        (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
        (const._exportFunctionContinuation.type.Export.field): Deleted.
        (const._exportFunctionContinuation): Deleted.
        * wasm/Builder_WebAssemblyBinary.js:
        (const.emitters.Import):
        (const.emitters.Export):
        (const.emitters.Exception):
        * wasm/assert.js:
        * wasm/self-test/test_BuilderJSON.js:
        (ImportBeforeTypeSections): Deleted.
        * wasm/stress/catch-with-delegate.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        (assert.throws):
        * wasm/stress/create-tag-from.js: Added.
        * wasm/stress/exception-cross-instance-2.js: Added.
        (test):
        (assert.eq):
        * wasm/stress/exception-cross-instance-3.js: Added.
        (test):
        (assert.eq):
        * wasm/stress/exception-cross-instance.js: Added.
        (test):
        (assert.throws):
        (instB.new.WebAssembly.Instance):
        * wasm/stress/exception-liveness-tier-up.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.catch):
        (assert.eq.):
        (assert.eq):
        * wasm/stress/exception-multiple-instances.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.module.new.WebAssembly.Module):
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.inst.exports.throw):
        * wasm/stress/exception-simple-delegate.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.testSimpleThrowDelegate):
        (testThrowDelegateSkip):
        (testDelegateCaller):
        (testSimpleDelegateMerge):
        * wasm/stress/exception-simple-throw-catch.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.testSimpleTryCatch):
        (testSimpleTryCatchAll):
        (testCallTryCatch):
        (testCallTryCatchAll):
        (testSimpleTryCatchValue):
        (testCallTryCatchValue):
        (testStackTryCatch):
        (testLiveAfterTryCatch):
        (testLiveAfterTryCatchAll):
        (testUnifyTryCatchCatch):
        (testUnifyTryCatchCatchAll):
        (testUnifyTryNoThrow):
        (testUnifyTryNoCatch):
        (testNestedCatch):
        * wasm/stress/exception-thrown-from-js-to-wasm-catchall-rethrow.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        * wasm/stress/exception-thrown-from-js-to-wasm-catchall.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        * wasm/stress/exception-thrown-from-js-to-wasm.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        * wasm/stress/exception-thrown-out-of-wasm.js: Added.
        * wasm/stress/exception-thrown-over-wasm.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        * wasm/stress/exception-trap.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.testCannotCatchUnreachable):
        (testCannotCatchOOB):
        (testWasmAPIThrow):
        (testJSCatchAndRethrow):
        * wasm/stress/rethrow-from-catch-to-catch.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        * wasm/stress/rethrow-to-catch.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.callback):
        (assert.throws.callback):
        (assert.throws):
        * wasm/stress/rethrow-to-delegate-to-catch.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here):
        (assert.eq.exn.getArg):
        (assert.throws):
        (assert.throws.callback):
        (assert.eq):
        * wasm/stress/simple-export-exception.js: Added.
        * wasm/v8/LICENSE: Added.
        * wasm/v8/exceptions-api.js: Added.
        (TestImport):
        (TestImportExport):
        (TestExceptionConstructor):
        (TestExceptionConstructorWithPayload):
        (TestCatchJSException.js_func):
        (js_func):
        (TestCatchJS):
        (TestCatchJSExceptionWithPayload):
        (TestGetArg):
        * wasm/v8/exceptions-export.js: Added.
        (TestExportMultiple):
        (TestExportOutOfBounds):
        * wasm/v8/exceptions-externref.js: Added.
        (TestThrowRefNull):
        (TestThrowRefParam):
        * wasm/v8/exceptions-import.js: Added.
        (NewExportedTag):
        (TestImportSimple):
        (TestImportMissing):
        * wasm/v8/exceptions-rethrow.js: Added.
        (TestRethrowInCatch):
        (TestRethrowInCatchAll):
        (TestRethrowNested):
        (TestRethrowRecatch):
        * wasm/v8/exceptions-shared.js: Added.
        (NewExportedException):
        (TestSingleInstance.let.instance.builder.instantiate.):
        (TestSingleInstance):
        (TestMultiInstanceNonShared.let.instance2.builder.instantiate.):
        (TestMultiInstanceShared.let.instance2.builder.instantiate.):
        (TestMultiModuleShared.let.instance2.builder2.instantiate.):
        * wasm/v8/exceptions-type-reflection.js: Added.
        (TestExport):
        (TestImportExport):
        * wasm/v8/exceptions-utils.js: Added.
        (assertWasmThrows):
        * wasm/v8/exceptions.js: Added.
        (TestThrowSimple):
        (TestCatchSimple):
        (TestTrapNotCaught):
        (TestTrapViaJSNotCaught.js_import):
        (TestManuallyThrownRuntimeErrorCaught.throw_exc):
        (TestManuallyThrownRuntimeErrorCaught):
        (TestExnWithWasmProtoNotCaught.js_import):
        (TestExnWithWasmProtoNotCaught):
        (TestStackOverflowNotCaught.stack_overflow):
        (TestStackOverflowNotCaught):
        (TestThrowParamI):
        (TestThrowParamF):
        (TestThrowParamL):
        (TestThrowParamD):
        (TestCatchCrossFunctions.throw_value):
        (TestCatchCrossFunctions.throw_string):
        (TestCatchCrossFunctions.throw_undefined):
        (TestCatchCrossFunctions.throw_fp):
        (TestCatchCrossFunctions.throw_large):
        (TestDelegateNoThrow):
        (TestDelegateThrow):
        (TestDelegateThrowNoCatch):
        (TestDelegateMerge):
        (TestDelegate1):
        (TestDelegateUnreachable):
        (TestDelegateToCaller):
        (TestUnreachableInCatchAll):
        (TestThrowWithLocal):
        (TestCatchlessTry):
        * wasm/v8/mjsunit.js: Added.
        (MjsUnitAssertionError):
        (MjsUnitAssertionError.prototype.toString):
        (catch):
        (classOf):
        (ValueOf):
        (prettyPrinted):
        (prettyPrintedArrayElement):
        (failWithMessage):
        (formatFailureText):
        (fail):
        (deepObjectEquals):
        (deepEquals):
        (assertSame):
        (assertNotSame):
        (assertEquals):
        (assertNotEquals):
        (assertEqualsDelta):
        (assertArrayEquals):
        (assertPropertiesEqual):
        (assertToStringEquals):
        (assertTrue):
        (assertFalse):
        (assertNull):
        (assertNotNull):
        (executeCode):
        (checkException):
        (assertThrows):
        (assertThrowsEquals):
        (assertThrowsAsync):
        (assertInstanceof):
        (assertDoesNotThrow):
        (assertUnreachable):
        (assertContains):
        (assertMatches):
        (concatenateErrors):
        (assertPromiseResult):
        (OptimizationStatus):
        (assertUnoptimized):
        (assertOptimized):
        (isNeverOptimizeLiteMode):
        (isNeverOptimize):
        (isAlwaysOptimize):
        (isInterpreted):
        (isBaseline):
        (isUnoptimized):
        (isOptimized):
        (isTurboFanned):
        (MjsUnitAssertionError.prepareStackTrace):
        * wasm/v8/wasm-module-builder.js: Added.
        (bytes):
        (wasmOptRefType):
        (wasmRefType):
        (wasmRtt):
        (wasmRttNoDepth):
        (makeSig):
        (makeSig_v_x):
        (makeSig_x_v):
        (makeSig_v_xx):
        (makeSig_r_v):
        (makeSig_r_x):
        (makeSig_r_xx):
        (defineWasmOpcode):
        (assertTraps):
        (Binary):
        (Binary.prototype.ensure_space):
        (Binary.prototype.trunc_buffer):
        (Binary.prototype.reset):
        (Binary.prototype.emit_u8):
        (Binary.prototype.emit_u16):
        (Binary.prototype.emit_u32):
        (Binary.prototype.emit_leb_u):
        (Binary.prototype.emit_u32v):
        (Binary.prototype.emit_u64v):
        (Binary.prototype.emit_bytes):
        (Binary.prototype.emit_string):
        (Binary.prototype.emit_heap_type):
        (Binary.prototype.emit_type):
        (Binary.prototype.emit_init_expr_recursive):
        (Binary.prototype.emit_init_expr):
        (Binary.prototype.emit_header):
        (Binary.prototype.emit_section):
        (WasmFunctionBuilder):
        (WasmFunctionBuilder.prototype.numLocalNames):
        (WasmFunctionBuilder.prototype.exportAs):
        (WasmFunctionBuilder.prototype.exportFunc):
        (WasmFunctionBuilder.prototype.setCompilationHint):
        (WasmFunctionBuilder.prototype.addBody):
        (WasmFunctionBuilder.prototype.addBodyWithEnd):
        (WasmFunctionBuilder.prototype.getNumLocals):
        (WasmFunctionBuilder.prototype.addLocals):
        (WasmFunctionBuilder.prototype.end):
        (WasmInitExpr.I32Const):
        (WasmInitExpr.I64Const):
        (WasmInitExpr.F32Const):
        (WasmInitExpr.F64Const):
        (WasmInitExpr.S128Const):
        (WasmInitExpr.GlobalGet):
        (WasmInitExpr.RefFunc):
        (WasmInitExpr.RefNull):
        (WasmInitExpr.StructNewWithRtt):
        (WasmInitExpr.StructNew):
        (WasmInitExpr.StructNewDefaultWithRtt):
        (WasmInitExpr.StructNewDefault):
        (WasmInitExpr.ArrayInit):
        (WasmInitExpr.ArrayInitStatic):
        (WasmInitExpr.RttCanon):
        (WasmInitExpr.RttSub):
        (WasmInitExpr.RttFreshSub):
        (WasmInitExpr.defaultFor):
        (WasmInitExpr):
        (WasmGlobalBuilder):
        (WasmGlobalBuilder.prototype.exportAs):
        (WasmTableBuilder):
        (WasmTableBuilder.prototype.exportAs):
        (makeField):
        (WasmStruct):
        (WasmStructSubtype):
        (WasmArray):
        (WasmArraySubtype):
        (WasmElemSegment):
        (WasmElemSegment.prototype.is_active):
        (WasmElemSegment.prototype.is_passive):
        (WasmElemSegment.prototype.is_declarative):
        (WasmElemSegment.prototype.expressions_as_elements):
        (WasmModuleBuilder):
        (WasmModuleBuilder.prototype.addStart):
        (WasmModuleBuilder.prototype.addMemory):
        (WasmModuleBuilder.prototype.addMemory64):
        (WasmModuleBuilder.prototype.addExplicitSection):
        (WasmModuleBuilder.prototype.stringToBytes):
        (WasmModuleBuilder.prototype.createCustomSection):
        (WasmModuleBuilder.prototype.addCustomSection):
        (WasmModuleBuilder.prototype.addType):
        (WasmModuleBuilder.prototype.addStruct):
        (WasmModuleBuilder.prototype.addStructSubtype):
        (WasmModuleBuilder.prototype.addArray):
        (WasmModuleBuilder.prototype.addArraySubtype):
        (WasmModuleBuilder.prototype.addGlobal):
        (WasmModuleBuilder.prototype.addTable):
        (WasmModuleBuilder.prototype.addTag):
        (WasmModuleBuilder.prototype.addFunction):
        (WasmModuleBuilder.prototype.addImport):
        (WasmModuleBuilder.prototype.addImportedGlobal):
        (WasmModuleBuilder.prototype.addImportedMemory):
        (WasmModuleBuilder.prototype.addImportedTable):
        (WasmModuleBuilder.prototype.addImportedTag):
        (WasmModuleBuilder.prototype.addExport):
        (WasmModuleBuilder.prototype.addExportOfKind):
        (WasmModuleBuilder.prototype.setCompilationHint):
        (WasmModuleBuilder.prototype.addDataSegment):
        (WasmModuleBuilder.prototype.addPassiveDataSegment):
        (WasmModuleBuilder.prototype.exportMemoryAs):
        (WasmModuleBuilder.prototype.addActiveElementSegment):
        (WasmModuleBuilder.prototype.addPassiveElementSegment):
        (WasmModuleBuilder.prototype.addDeclarativeElementSegment):
        (WasmModuleBuilder.prototype.appendToTable):
        (WasmModuleBuilder.prototype.setTableBounds):
        (WasmModuleBuilder.prototype.setName):
        (WasmModuleBuilder.prototype.toBuffer):
        (WasmModuleBuilder.prototype.toArray):
        (WasmModuleBuilder.prototype.instantiate):
        (WasmModuleBuilder.prototype.asyncInstantiate):
        (WasmModuleBuilder.prototype.toModule):
        (wasmSignedLeb):
        (wasmUnsignedLeb):
        (wasmI32Const):
        (wasmI64Const):
        (wasmF32Const):
        (wasmF64Const):
        (wasmS128Const):
        (getOpcodeName):
        * wasm/wasm.json:

2021-10-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] UnlinkedCodeBlock::m_instructions can be nullptr
        https://bugs.webkit.org/show_bug.cgi?id=231445
        rdar://83975933

        Reviewed by Mark Lam.

        * stress/unlinked-code-block-destructor.js: Added.
        (useAllMemory.get Object):
        (useAllMemory.foo):
        (useAllMemory):
        (try.bar):

2021-10-08  Saam Barati  <sbarati@apple.com>

        RegExpExec can't statically prove which of the two structures it will get in AI by just looking at the RegExp*
        https://bugs.webkit.org/show_bug.cgi?id=231382
        <rdar://83722151>

        Reviewed by Mark Lam.

        * stress/reg-exp-exec-cant-prove-which-structure-it-produces-in-ai.js: Added.
        (foo):

2021-10-07  Philip Chimento  <pchimento@igalia.com>

        [JSC] Temporal tweaks to pass more test262 tests
        https://bugs.webkit.org/show_bug.cgi?id=231331

        Reviewed by Yusuke Suzuki.

        * test262/config.yaml: Three tests no longer crash, but they still
          depend on unimplemented functionality, so skip them.
        * test262/expectations.yaml:

2021-10-06  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed, ensure test262 expectations reflect BigSur release mode.

        * test262/expectations.yaml:

2021-10-06  Philip Chimento  <pchimento@igalia.com>

        [JSC] Update test262
        https://bugs.webkit.org/show_bug.cgi?id=231201

        Add tests that were somehow cut off in the previous patch.

        Reviewed by Ross Kirsling.

        * test262/test/built-ins/Temporal/Now/*: Added.

2021-10-06  Philip Chimento  <pchimento@igalia.com>

        [JSC] Update test262
        https://bugs.webkit.org/show_bug.cgi?id=231201

        Reviewed by Ross Kirsling.

        Update test262 to latest, to bring in Temporal tests.

        * test262/config.yaml: Ignore tests that depend on unimplemented parts
        of Temporal.
        * test262/expectations.yaml: Add new failures.
        * test262/*: Update from upstream.
        * test262/test262-Revision.txt:

2021-10-06  Saam Barati  <sbarati@apple.com>

        Run backwards propagation before we prune the graph after ForceOSRExit nodes in BytecodeParser
        https://bugs.webkit.org/show_bug.cgi?id=230823
        <rdar://problem/83565088>

        Reviewed by Robin Morisset.

        * run-backwards-propagation-before-osr-exit-pruning.js: Added.
        (assert):
        (main.async v24):
        (main):

2021-10-05  Saam Barati  <sbarati@apple.com>

        Don't pass DontBuildStrings to next token after parsing an empty parameter list
        https://bugs.webkit.org/show_bug.cgi?id=225094
        <rdar://problem/77231778>

        Reviewed by Yusuke Suzuki.

        * stress/dont-pass-DontBuildStrings-when-building-empty-arguments-list.js: Added.
        (main.a.prototype.g.toString.string_appeared_here):
        (main.a):
        (main):

2021-10-05  Mark Lam  <mark.lam@apple.com>

        CodeBlock should not add/remove LoopHintExecutionCounters.
        https://bugs.webkit.org/show_bug.cgi?id=231209
        rdar://83571235

        Reviewed by Saam Barati.

        * stress/codeBlock-should-not-add-remove-loop-hint-execution-counters-due-to-cached-unlinked-baseline-code.js: Added.

2021-10-05  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSPropertyNameEnumerator should not have cached prototype chain since empty JSPropertyNameEnumerator is shared
        https://bugs.webkit.org/show_bug.cgi?id=231202

        Reviewed by Keith Miller.

        * stress/for-in-validation-poly-proto.js: Added.
        (shouldBe):
        (test):
        (factory.Test):
        (factory):
        * stress/for-in-validation-watchpoint.js: Added.
        (shouldBe):
        (test):
        (Test):
        (factory):

2021-10-04  Saam Barati  <sbarati@apple.com>

        IntrinsicGetterAccessCase implementation of __proto__ needs to handle get_by_id_with_this
        https://bugs.webkit.org/show_bug.cgi?id=229951
        <rdar://problem/82787527>

        Reviewed by Yusuke Suzuki.

        * stress/run-proto-intrinsic-getter-with-this-value-in-get-by-id-with-this.js: Added.
        (assert):
        (main.v37):
        (main):

2021-10-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update test262 config.yaml since OSS WebKit now uses ICU 64.2 header
        https://bugs.webkit.org/show_bug.cgi?id=231121

        Reviewed by Mark Lam.

        * test262/config.yaml:

2021-10-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DateTimeFormat.resolvedOptions shouldn't return an object with other date/time properties if dateStyle or timeStyle are set
        https://bugs.webkit.org/show_bug.cgi?id=231041

        Reviewed by Ross Kirsling.

        * stress/intl-date-time-format-date-time-style-basic.js:
        (shouldBe.JSON.stringify.o.resolvedOptions):
        (shouldBe):
        (shouldBe.o.format): Deleted.

2021-10-02  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, add reported test to our stress tests
        https://bugs.webkit.org/show_bug.cgi?id=230827

        While we cannot reproduce the issue successfully, adding it to our stress tests to ensure that this will never happen.

        * stress/intl-datetimeformat.js:

2021-10-01  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r283293.
        https://bugs.webkit.org/show_bug.cgi?id=231116

        changing print() broke a lot of random things

        Reverted changeset:

        "Print values in a nicer way in the jsc shell"
        https://bugs.webkit.org/show_bug.cgi?id=230931
        https://commits.webkit.org/r283293

2021-09-30  Saam Barati  <sbarati@apple.com>

        The DFG/FTL need to be aware that Proxy's can produce "function" for typeof and might be callable
        https://bugs.webkit.org/show_bug.cgi?id=230804
        <rdar://problem/83543951>

        Reviewed by Yusuke Suzuki.

        * stress/ai-typeof-needs-to-be-aware-of-proxy-2.js: Added.
        (assert):
        (builtin.vm.createBuiltin):
        (builtin2.vm.createBuiltin):
        (let.p.new.Proxy):
        * stress/ai-typeof-needs-to-be-aware-of-proxy.js: Added.
        (assert):
        (builtin.vm.createBuiltin):
        (let.p.new.Proxy):
        * stress/is-callable-in-ftl-needs-to-be-aware-of-proxy.js: Added.
        (main):

2021-09-29  Mark Lam  <mark.lam@apple.com>

        DFG strength reduction on % operator should handle an INT_MIN divisor.
        https://bugs.webkit.org/show_bug.cgi?id=230391
        <rdar://problem/83229740>

        Reviewed by Robin Morisset.

        * stress/dfg-strength-reduction-on-mod-should-handle-INT_MIN.js: Added.

2021-09-29  Saam Barati  <sbarati@apple.com>

        Print values in a nicer way in the jsc shell
        https://bugs.webkit.org/show_bug.cgi?id=230931

        Reviewed by Tadeu Zagallo.

        * ChakraCore/test/jsc-lib.js:

2021-09-29  Saam Barati  <sbarati@apple.com>

        We need to load the baseline JIT's constant pool register after OSR exit to checkpoints if we return to baseline code
        https://bugs.webkit.org/show_bug.cgi?id=230972
        <rdar://83659469>

        Reviewed by Mark Lam and Yusuke Suzuki.

        * stress/checkpoint-osr-exit-needs-to-reload-baseline-jit-constant-pool-gpr.js: Added.
        (empty):
        (empty2):
        (test):

2021-09-29  Saam Barati  <sbarati@apple.com>

        Code inside strength reduction can incorrectly prove that we know what lastIndex is
        https://bugs.webkit.org/show_bug.cgi?id=230802
        <rdar://problem/83543699>

        Reviewed by Mark Lam.

        * stress/dont-fold-regexp-exec-when-we-dont-know-last-index-and-regexp-is-constant.js: Added.
        (assert):
        (let.reg.RegExp.foo.g.doExec):
        (noInline.doExec):

2021-09-29  Saam Barati  <sbarati@apple.com>

        DoesGCCheck does not use enough bits for nodeIndex
        https://bugs.webkit.org/show_bug.cgi?id=230915
        <rdar://83297515>

        Unreviewed. Forgot to add a try/catch in the test.

        * stress/verify-can-gc-node-index.js:

2021-09-28  Saam Barati  <sbarati@apple.com>

        DoesGCCheck does not use enough bits for nodeIndex
        https://bugs.webkit.org/show_bug.cgi?id=230915
        <rdar://83297515>

        Reviewed by Mark Lam.

        * stress/verify-can-gc-node-index.js: Added.
        (gen):
        (f):

2021-09-28  Alexey Shvayka  <shvaikalesh@gmail.com>

        Speed up setting JSFunction's "prototype" property
        https://bugs.webkit.org/show_bug.cgi?id=230864

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/class-creation.js: Added.
        * microbenchmarks/function-prototype-put-non-reified.js: Added.
        * microbenchmarks/function-prototype-put-reified.js: Added.

2021-09-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] Add ApproximateTime
        https://bugs.webkit.org/show_bug.cgi?id=230876

        Reviewed by Filip Pizlo.

        * microbenchmarks/approximate-time-now.js: Added.
        * microbenchmarks/monotonic-time-now.js: Added.
        * microbenchmarks/wall-time-now.js: Added.

2021-09-26  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize PutByVal with for-in
        https://bugs.webkit.org/show_bug.cgi?id=230801

        Reviewed by Saam Barati.

        * stress/for-in-sentinel.js: Added.
        (shouldBe):
        (test):

2021-09-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r283095.
        https://bugs.webkit.org/show_bug.cgi?id=230815

        We should land the original patch since this does not work
        with bytecode cache

        Reverted changeset:

        "[JSC] Optimize PutByVal with for-in"
        https://bugs.webkit.org/show_bug.cgi?id=230801
        https://commits.webkit.org/r283095

2021-09-26  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize PutByVal with for-in
        https://bugs.webkit.org/show_bug.cgi?id=230801

        Reviewed by Saam Barati.

        * stress/for-in-sentinel.js: Added.
        (shouldBe):
        (test):

2021-09-24 Rick Waldron <waldron.rick@gmail.com>

        [JSC] Add checkScriptSyntax function to jsc host environment
        https://bugs.webkit.org/show_bug.cgi?id=230631

        Reviewed by Yusuke Suzuki.

        Updates tests that were using eval() to verify syntax.

        * stress/arrow-function-syntax.js: Replace custom checkSyntax with checkScriptSyntax
        * stress/async-iteration-for-await-of-syntax.js: Replace custom checkSyntax with checkScriptSyntax
        * stress/async-iteration-syntax.js: Replace custom checkSyntax with checkScriptSyntax

2021-09-23  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Handle syntactic production for `#x in expr` correctly
        https://bugs.webkit.org/show_bug.cgi?id=230668

        Reviewed by Yusuke Suzuki.

        * stress/private-in.js: Add tests.
        * test262/expectations.yaml: Mark two test cases as passing.

2021-09-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Filter algorithmic numbering systems from enumeration data
        https://bugs.webkit.org/show_bug.cgi?id=230660

        Reviewed by Ross Kirsling.

        * stress/intl-enumeration.js:
        * test262/expectations.yaml:

2021-09-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Adjust Intl currency enumeration
        https://bugs.webkit.org/show_bug.cgi?id=230656

        Reviewed by Ross Kirsling.

        * stress/intl-enumeration.js:
        * test262/expectations.yaml:

2021-09-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] emoji and eor collations are missing
        https://bugs.webkit.org/show_bug.cgi?id=230652

        Reviewed by Ross Kirsling.

        * stress/intl-enumeration.js:
        * test262/expectations.yaml:

2021-09-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Intl unicode identifier type will reject underscore
        https://bugs.webkit.org/show_bug.cgi?id=230645

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:

2021-09-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Upgrade test262
        https://bugs.webkit.org/show_bug.cgi?id=230641

        Reviewed by Ross Kirsling.

        Upgrade test262 to the latest one.

        * test262/config.yaml:
        * test262/expectations.yaml:
        * test262/test262-Revision.txt:

2021-09-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] CompareStrictEq is omitting String check incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=230582
        rdar://83237121

        Reviewed by Mark Lam.

        * stress/compare-strict-eq-string-check.js: Added.
        (foo):
        (bar):

2021-09-21  Justin Michaud  <justin_michaud@apple.com>

        Differential testing: live statement don't execute
        https://bugs.webkit.org/show_bug.cgi?id=229939

        Reviewed by Saam Barati.

        * stress/in-by-val-should-throw.js: Added.
        (doesThrow):
        (noInline.doesThrow.noFTL.doesThrow.blackbox):
        (noInline.blackbox.doesNotThrow):
        (noInline.doesNotThrow.noFTL.doesNotThrow.main):

2021-09-20  Mikhail R. Gadelha  <mikhail@igalia.com>

        Skip stress/json-stringify-stack-overflow.js only on memory limited systems
        https://bugs.webkit.org/show_bug.cgi?id=230489

        Unreviewed gardening.

        It's currently only failing on systems with low memory, regardless of
        the arch.

        * stress/json-stringify-stack-overflow.js:

2021-09-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add fast property enumeration mode for JSON.stringify
        https://bugs.webkit.org/show_bug.cgi?id=230393

        Reviewed by Mark Lam.

        * stress/json-stringify-object-modify.js: Added.
        (shouldBe):
        (throw.new.Error.let.object.hello.get inner):
        (throw.new.Error):
        (shouldBe.let.object.hello.get inner):

2021-09-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize leaf object creation in JSON.parse
        https://bugs.webkit.org/show_bug.cgi?id=230298

        Reviewed by Keith Miller.

        * microbenchmarks/json-parse-leaf-object.js: Added.

2021-09-13  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add JSON.parse microbenchmarks from Speedometer2
        https://bugs.webkit.org/show_bug.cgi?id=230234

        Reviewed by Saam Barati.

        This patch adds JSON.parse microbenchmarks from Speedometer2. We record JSON.parse call in Speedometer2 subtests,
        and create benchmark which performs the same calls.

        * microbenchmarks/flight-todomvc-json-parse.js: Renamed from JSTests/microbenchmarks/flight-todomvc-json.js.
        * microbenchmarks/vanilla-es2015-babel-webpack-todomvc-json-parse.js: Added.
        * microbenchmarks/vanilla-es2015-todomvc-json-parse.js: Added.
        * microbenchmarks/vanilla-todomvc-json-parse.js: Added.

2021-09-10  Justin Michaud  <justin_michaud@apple.com>

        [ JSC Catalina Release ] wasm.yaml/wasm/references/multitable.js.wasm-collect-continuously (javascriptcore-tests) is a flaky timeout
        https://bugs.webkit.org/show_bug.cgi?id=229896

        The combination of collectContinuously and verifyGC really hammer the poor hardware 
        during the final two "table insanity" stress tests. I have confirmed that the test
        is indeed making forward progress, even after running for 45 minutes, by using logGC. 
        For this reason, it seems like it is OK to skip verifyGC for this test.

        We could have added a vm option isVerifyingGC and disabled only the table insanity test
        in this case like we do for low memory, but I think this is good enough.

        Reviewed by Mark Lam.

        * wasm/references/multitable.js:

2021-09-09  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Intl.Locale weekendInfo should list all weekend days instead of range
        https://bugs.webkit.org/show_bug.cgi?id=230108

        Reviewed by Ross Kirsling.

        * stress/intl-locale-info.js:
        (throw.new.Error):
        (let.enGB.new.Intl.Locale.shouldBe): Deleted.
        * test262/config.yaml:

2021-09-09  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize op_get_property_enumerator further
        https://bugs.webkit.org/show_bug.cgi?id=230086

        Reviewed by Saam Barati.

        * stress/for-in-cell-other.js: Added.
        (shouldBe):
        (forIn):
        * stress/for-in-null-undefined.js: Added.
        (shouldBe):
        (forIn):

2021-09-09  Justin Michaud  <justin_michaud@apple.com>

        Differential testing: incorrect constant propagation around Uint8ClampedArray
        https://bugs.webkit.org/show_bug.cgi?id=229869

        Reviewed by Saam Barati.

        * stress/Uint8ClampedArrayClampsInt52Positive.js: Added.
        (let.x.123.test):
        (noInline.test.int32pos1):
        (255.int32pos2):
        (1.int32neg1):
        (0.int32neg2):
        (0.int52pos1):
        (255.int52pos2):
        (255.int52neg1):
        (0.int52neg2):
        (0.int52neg3):
        (0.int52pos3):
        (255.int8):

2021-09-09  Robin Morisset  <rmorisset@apple.com>

        Optimize compareStrictEq when neither side is a double and at least one is not a BigInt
        https://bugs.webkit.org/show_bug.cgi?id=226755
        <rdar://problem/79321542>

        Reviewed by Yusuke Suzuki.

        Made the error messages in stress/reflect-set a bit more informative in the process of debugging an issue with the patch.

        * stress/reflect-set.js:
        (shouldBe):
        (shouldThrow):

2021-09-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement Temporal.PlainTime
        https://bugs.webkit.org/show_bug.cgi?id=229892

        Reviewed by Darin Adler.

        * stress/temporal-calendar.js:
        * stress/temporal-duration.js:
        * stress/temporal-plaintime.js: Added.
        (shouldBe):
        (shouldThrow):
        (shouldBe.String.Temporal.PlainTime.from):
        (let.time.Temporal.PlainTime.from.shouldBe):
        (let.text.of.failures.shouldThrow):
        (print):
        (shouldBe.Temporal.PlainTime.from):
        (new.Temporal.PlainTime.valueOf):
        (shouldBe.String.time.until.Temporal.PlainTime.from):
        * stress/temporal-timezone.js:
        (let.text.of.failures.shouldThrow): Deleted.
        * test262/config.yaml:

2021-09-07  Yusuke Suzuki  <ysuzuki@apple.com>

        Math.hypot checks for infinite values prematurely
        https://bugs.webkit.org/show_bug.cgi?id=229843

        Reviewed by Ross Kirsling.

        * stress/math-hypot-evaluation-ordering.js: Added.
        (shouldThrow):

2021-09-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make EnumeratorNextUpdateIndexAndMode clobberizing rule precise
        https://bugs.webkit.org/show_bug.cgi?id=229898
        rdar://82714439

        Reviewed by Saam Barati.

        * complex.yaml:
        * complex/for-in-clobberize.js: Added.

2021-09-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement Temporal.TimeZone
        https://bugs.webkit.org/show_bug.cgi?id=229703

        Reviewed by Ross Kirsling.

        * complex.yaml:
        * complex/temporal-now-timezone-check.js: Added.
        (shouldBe):
        * complex/temporal-now-timezone-with-broken-tz.js: Added.
        (shouldBe):
        * stress/intl-enumeration.js:
        * stress/temporal-timezone.js: Added.
        (shouldBe):
        (shouldThrow):
        (let.text.of.failures.shouldThrow):
        (reviver):

2021-09-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Validate JSPropertyNameEnumerator via watchpoints
        https://bugs.webkit.org/show_bug.cgi?id=229846

        Reviewed by Keith Miller.

        * stress/for-in-cacheable-dictionary.js: Added.
        (shouldBe):
        (collect):
        * stress/for-in-invalidate.js: Added.
        (shouldBe):
        (collect):
        * stress/for-in-uncacheable-dictionary.js: Added.
        (shouldBe):
        (collect):

2021-08-31  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Implement Temporal.Duration
        https://bugs.webkit.org/show_bug.cgi?id=228532

        Reviewed by Yusuke Suzuki.

        * stress/temporal-duration.js: Added.
        * test262/config.yaml: Enabled Duration tests.

2021-08-30  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC][Intl] Errors for .call({}) are too verbose
        https://bugs.webkit.org/show_bug.cgi?id=229694

        Reviewed by Yusuke Suzuki.

        * stress/intl-displaynames.js:

2021-08-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement Temporal.Calendar
        https://bugs.webkit.org/show_bug.cgi?id=229651

        Reviewed by Ross Kirsling.

        * stress/temporal-calendar.js: Added.
        (shouldBe):
        (shouldThrow):
        (new.Temporal.Calendar):

2021-08-29  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Upgrade test262
        https://bugs.webkit.org/show_bug.cgi?id=229645

        Reviewed by Keith Miller.

        Upgrade test262 to the latest one.

        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test262-Revision.txt:

2021-08-26  Yusuke Suzuki  <ysuzuki@apple.com>

        Intl.DateTimeFormat incorrectly parses patterns with 'h' literal
        https://bugs.webkit.org/show_bug.cgi?id=229313
        rdar://82414310

        Reviewed by Ross Kirsling.

        * stress/intl-date-pattern-includes-literal-text.js: Added.
        (shouldBe):

2021-08-26  Yusuke Suzuki  <ysuzuki@apple.com>

        Float32Arrays.sort() return undefined when length < 2
        https://bugs.webkit.org/show_bug.cgi?id=229575

        Reviewed by Saam Barati.

        * stress/typed-array-sort-small.js: Added.
        (shouldBe):
        (throw.new.Error):

2021-08-26  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] op_put_private_name should use modern IC and remove ByValInfo
        https://bugs.webkit.org/show_bug.cgi?id=229544

        Reviewed by Saam Barati.

        Move class-fields-private benchmarks into microbenchmarks.
        Added several microbenchmarks and stress tests.

        * microbenchmarks/class-private-field-polymorphic.js: Added.
        (shouldBe):
        (test.A.prototype.put):
        * microbenchmarks/get-private-name.js: Renamed from JSTests/microbenchmarks/class-fields-private/get-private-name.js.
        * microbenchmarks/monomorphic-get-private-field.js: Renamed from JSTests/microbenchmarks/class-fields-private/monomorphic-get-private-field.js.
        * microbenchmarks/polymorphic-get-private-field.js: Renamed from JSTests/microbenchmarks/class-fields-private/polymorphic-get-private-field.js.
        * microbenchmarks/polymorphic-put-private-field.js: Renamed from JSTests/microbenchmarks/class-fields-private/polymorphic-put-private-field.js.
        * microbenchmarks/put-by-val-polymorphic-properties.js: Added.
        (shouldBe):
        (test):
        * microbenchmarks/put-private-field.js: Renamed from JSTests/microbenchmarks/class-fields-private/put-private-field.js.
        * stress/class-private-field-megamorphic.js: Added.
        (shouldBe):
        * stress/class-private-field-polymorphic.js: Added.
        (shouldBe):
        (test.A.prototype.put):
        * stress/put-by-val-polymorphic-properties.js: Added.
        (shouldBe):
        (test):

2021-08-26  Saam Barati  <sbarati@apple.com>

        r281485 was not sufficient in where it called disablePeepholeOptimization
        https://bugs.webkit.org/show_bug.cgi?id=229582
        <rdar://82346980>

        Reviewed by Yusuke Suzuki.

        * stress/for-in-disable-bytecode-generator-peephole-optimizations-after-rewrite-2.js: Added.
        (foo):

2021-08-24  Yusuke Suzuki  <ysuzuki@apple.com>

        Update Intl tests to support ICU 68
        https://bugs.webkit.org/show_bug.cgi?id=229467

        Reviewed by Mark Lam.

        ICU 68 changes some outputs of Intl tests. This patch adjusts that.

        * stress/intl-parse-unicode-subtags.js:
        (vm.icuVersion):

2021-08-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add Intl Enumeration APIs
        https://bugs.webkit.org/show_bug.cgi?id=214795

        Reviewed by Ross Kirsling.

        * stress/intl-datetimeformat.js:
        * stress/intl-enumeration.js: Added.
        (shouldBe):
        (shouldThrow):
        * stress/intl-locale-info.js:
        (let.l.new.Intl.Locale.shouldBe):
        (shouldBe):

2021-08-24  Keith Miller  <keith_miller@apple.com>

        (r281473) stress/for-in-has-own-property-shouldnt-flush-registers.js failing on Debug
        https://bugs.webkit.org/show_bug.cgi?id=229448

        Reviewed by Mark Lam.

        Fix typo in test name.

        * stress/for-in-in-by-val-should-flush-registers.js: Renamed from JSTests/stress/for-in-in-by-val-shouldnt-flush-registers.js.

2021-08-23  Saam Barati  <sbarati@apple.com>

        Disable peephole optimizations in the byte code generator after rewriting instructions for for-in
        https://bugs.webkit.org/show_bug.cgi?id=229420
        <rdar://82020528>

        Reviewed by Keith Miller.

        * stress/for-in-disable-bytecode-generator-peephole-optimizations-after-rewrite.js: Added.
        (foo):

2021-08-23  Saam Barati  <sbarati@apple.com>

        compileEnumeratorHasProperty uses flushRegisters incorrectly
        https://bugs.webkit.org/show_bug.cgi?id=229412
        <rdar://82020767>

        Reviewed by Keith Miller.

        * stress/for-in-has-own-property-shouldnt-flush-registers.js: Added.
        (foo):
        * stress/for-in-in-by-val-shouldnt-flush-registers.js: Added.
        (a.toString):

2021-08-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Remove already-shipped wasm option flags
        https://bugs.webkit.org/show_bug.cgi?id=229386

        Reviewed by Ross Kirsling.

        * wasm/references/element_active_mod.js:
        * wasm/references/element_parsing.js:
        * wasm/references/externref_globals.js:
        * wasm/references/externref_modules.js:
        * wasm/references/externref_table.js:
        * wasm/references/externref_table_import.js:
        * wasm/references/func_ref.js:
        * wasm/references/globals.js:
        * wasm/references/is_null.js:
        * wasm/references/memory_copy.js:
        * wasm/references/memory_copy_shared.js:
        * wasm/references/memory_fill_shared.js:
        * wasm/references/multitable.js:
        * wasm/references/parse_unreachable.js:
        * wasm/references/table_js_api.js:
        * wasm/references/table_misc.js:
        * wasm/references/validation.js:
        * wasm/stress/immutable-globals.js:
        * wasm/stress/local-ref.js:
        * wasm/stress/mutable-globals.js:
        * wasm/stress/table-grow-table-size.js:

2021-08-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Remove already-shipped JS feature flags
        https://bugs.webkit.org/show_bug.cgi?id=229387

        Reviewed by Ross Kirsling.

        * microbenchmarks/class-fields-private/get-private-name.js:
        * microbenchmarks/class-fields-private/monomorphic-get-private-field.js:
        * microbenchmarks/class-fields-private/polymorphic-get-private-field.js:
        * microbenchmarks/class-fields-private/polymorphic-put-private-field.js:
        * microbenchmarks/class-fields-private/put-private-field.js:
        * stress/class-fields-private-as-function.js:
        * stress/class-fields-private-cached-bytecode.js:
        * stress/class-fields-private-freeze-out-of-line.js:
        * stress/class-fields-private-freeze.js:
        * stress/class-fields-private-harmony.js:
        * stress/class-fields-private-on-proxy.js:
        * stress/class-fields-private-out-of-line.js:
        * stress/class-fields-private-prevent-extensions-out-of-line.js:
        * stress/class-fields-private-prevent-extensions.js:
        * stress/class-fields-private-seal-out-of-line.js:
        * stress/class-fields-private-seal.js:
        * stress/class-fields-private-use-eval.js:
        * stress/class-fields-static-harmony.js:
        * stress/class-fields-static-private-harmony.js:
        * stress/class-fields-stress-instance.js:
        * stress/class-private-method-access.js:
        * stress/dfg-get-private-name-by-id-generic.js:
        * stress/dfg-get-private-name-by-id-osr-bad-identifier.js:
        * stress/dfg-get-private-name-by-id.js:
        * stress/dfg-get-private-name-by-offset-osr-bad-identifier.js:
        * stress/dfg-get-private-name-by-offset-osr-bad-structure.js:
        * stress/dfg-get-private-name-by-offset.js:
        * stress/dfg-get-private-name-by-val-generic.js:
        * stress/dfg-put-private-name-check-barrier-insertion.js:
        * stress/dfg-put-private-name-compiled-as-put-by-id-direct.js:
        * stress/dfg-put-private-name-compiled-as-put-private-name-by-id.js:
        * stress/ftl-get-private-name-by-id.js:
        * stress/ftl-get-private-name-by-offset-multi.js:
        * stress/get-private-name-cache-failure.js:
        * stress/get-private-name-with-constant-ident.js:
        * stress/get-private-name-with-constant-symbol.js:
        * stress/get-private-name-with-different-symbol.js:
        * stress/get-private-name-with-primitive.js:
        * stress/get-private-name.js:
        * stress/optional-chaining-and-private-fields.js:
        * stress/private-accesor-duplicate-name-early-errors.js:
        * stress/private-accessor-static-non-static.js:
        * stress/private-brand-installed-after-super-call-from-arrow-function.js:
        * stress/private-brand-installed-after-super-call-from-eval.js:
        * stress/private-getter-brand-check.js:
        * stress/private-getter-inner-class.js:
        * stress/private-in-error.js:
        * stress/private-in.js:
        * stress/private-members-get-and-set.js:
        * stress/private-method-and-field-named-constructor.js:
        * stress/private-method-brand-check.js:
        * stress/private-method-change-attribute-from-branded-structure.js:
        * stress/private-method-change-prototype-from-branded-structure.js:
        * stress/private-method-check-private-brand-ic.js:
        * stress/private-method-check-structure-miss.js:
        * stress/private-method-comparison.js:
        * stress/private-method-delete-property-from-branded-structure.js:
        * stress/private-method-extends-brand-check.js:
        * stress/private-method-get-and-call.js:
        * stress/private-method-invalid-multiple-brand-installation.js:
        * stress/private-method-invalidate-compiled-with-constant-symbol.js:
        * stress/private-method-nested-class.js:
        * stress/private-method-on-sealed-objects.js:
        * stress/private-method-on-uncacheable-dictionary.js:
        * stress/private-method-polymorphic-with-constant-symbol.js:
        * stress/private-method-set-brand-should-have-write-barrier.js:
        * stress/private-method-untyped-use.js:
        * stress/private-method-with-uncacheable-dictionary-transition.js:
        * stress/private-methods-and-accessors-postfix-node.js:
        * stress/private-methods-and-accessors-prefix-node.js:
        * stress/private-methods-inline-cache.js:
        * stress/private-methods-megamorphic-ic.js:
        * stress/private-methods-on-proxy.js:
        * stress/private-methods-poly-ic-multiple-classes.js:
        * stress/private-methods-poly-ic-single-class.js:
        * stress/private-name-access-in-computed-property.js:
        * stress/private-names-available-on-direct-eval.js:
        * stress/private-names-available-on-eval-during-field-initialization.js:
        * stress/private-setter-brand-check.js:
        * stress/private-setter-inner-class.js:
        * stress/put-by-val-direct-addprivate.js:
        * stress/put-by-val-direct-putprivate.js:
        * stress/put-private-name-by-id-set-do-not-add-structure-trasition.js:
        * stress/put-private-name-check-structure-miss.js:
        * stress/put-private-name-constant-folding-to-mult-put-by-offset.js:
        * stress/put-private-name-constant-folding-to-put-by-offset.js:
        * stress/put-private-name-generic.js:
        * stress/put-private-name-invalid-define.js:
        * stress/put-private-name-invalid-store.js:
        * stress/put-private-name-invalidate-compiled-with-constant-symbol.js:
        * stress/put-private-name-polymorphic-with-constant-symbol.js:
        * stress/put-private-name-untyped-use.js:
        * stress/put-private-name-with-constant-symbol.js:
        * stress/put-private-name-with-different-identifier.js:
        * stress/put-private-name-with-primitive.js:
        * stress/static-private-methods-and-accessor-inner-class.js:
        * stress/static-private-methods-and-accessor-multiple-evaluation.js:
        * stress/static-private-methods-and-accessors-postfix-node.js:
        * stress/static-private-methods-and-accessors-prefix-node.js:
        * stress/v8-cleanup-from-different-realm.js:
        * stress/v8-cleanup-proxy-from-different-realm.js:
        * stress/v8-finalization-registry-basics.js:
        * stress/v8-finalizationregistry-and-weakref.js:
        * stress/v8-finalizationregistry-keeps-holdings-alive.js:
        * stress/v8-finalizationregistry-scheduled-for-cleanup-multiple-times.js:
        * stress/v8-multiple-dirty-finalization-registries.js:
        * stress/v8-reentrant-gc-from-cleanup.js:
        * stress/v8-stress-finalizationregistry-dirty-enqueue.js:
        * stress/v8-undefined-holdings.js:
        * stress/v8-unregister-after-cleanup.js:
        * stress/v8-unregister-before-cleanup.js:
        * stress/v8-unregister-called-twice.js:
        * stress/v8-unregister-inside-cleanup2.js:
        * stress/v8-unregister-inside-cleanup3.js:
        * stress/v8-unregister-many.js:
        * stress/v8-weak-unregistertoken.js:
        * test262/config.yaml:

2021-08-22  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, speculative fix for old ICU
        https://bugs.webkit.org/show_bug.cgi?id=229385

        * stress/intl-locale-info.js:
        (shouldBe):

2021-08-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Remove Intl runtime feature flags for already shipped ones
        https://bugs.webkit.org/show_bug.cgi?id=229371

        Reviewed by Ross Kirsling.

        * stress/intl-datetimeformat-day-period.js:
        * test262/config.yaml:

2021-08-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Intl.DisplayNames v2
        https://bugs.webkit.org/show_bug.cgi?id=227832

        Reviewed by Ross Kirsling.

        * stress/intl-displaynames-v2.js: Added.
        (shouldBe):
        (shouldThrow):
        (vm.icuVersion):
        * stress/intl-displaynames.js:
        (vm.icuVersion):
        * test262/config.yaml:
        * test262/expectations.yaml:

2021-08-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Intl Locale Info
        https://bugs.webkit.org/show_bug.cgi?id=227830

        Reviewed by Ross Kirsling.

        * stress/intl-locale-info.js: Added.
        (shouldBe):
        (throw.new.Error):
        (let.enGB.new.Intl.Locale.shouldBe):
        (let.l.new.Intl.Locale.shouldBe):
        * test262/config.yaml:

2021-08-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Extend Intl TimeZoneName Option
        https://bugs.webkit.org/show_bug.cgi?id=227831

        Reviewed by Ross Kirsling.

        * stress/intl-extended-timezone-names.js: Added.
        (shouldBe):
        (timeZoneTest):
        * test262/config.yaml:

2021-08-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Enable Array#findLast method
        https://bugs.webkit.org/show_bug.cgi?id=229355

        Reviewed by Saam Barati.

        * stress/unscopables.js:

2021-08-17  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unreviewed. Skip failing MIPS tests
        https://bugs.webkit.org/show_bug.cgi?id=229198

        * ChakraCore.yaml:

2021-08-13  Keith Miller  <keith_miller@apple.com>

        EnumeratorNextUpdatePropertyName always needs to be able to handle IndexedMode
        https://bugs.webkit.org/show_bug.cgi?id=229087

        Reviewed by Filip Pizlo.

        * stress/for-in-own-structure-and-generic-with-late-add-indexed.js: Added.
        (test):
        (Foo):

2021-08-11  Yusuke Suzuki  <ysuzuki@apple.com>

        WTFCrash in JSC::Lexer<char16_t>::append8
        https://bugs.webkit.org/show_bug.cgi?id=228982

        Reviewed by Mark Lam.

        * stress/directive-includes-non-latin1.js: Added.

2021-08-09  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] super-Latin1 white space and line terminator after regular expression literal misinterpreted as flags
        https://bugs.webkit.org/show_bug.cgi?id=227944

        Reviewed by Alexey Shvayka.

        * test262/expectations.yaml:

2021-08-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Clean up test262 expectations
        https://bugs.webkit.org/show_bug.cgi?id=228903

        Reviewed by Ross Kirsling.

        * test262/config.yaml:
        * test262/expectations.yaml:

2021-08-07  Keith Miller  <keith_miller@apple.com>

        for-in should only emit one loop in bytecode
        https://bugs.webkit.org/show_bug.cgi?id=227989

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/for-in-double-array-with-own-named.js: Added.
        (test):
        * microbenchmarks/for-in-double-array.js: Added.
        (test):
        * microbenchmarks/for-in-getters.js: Added.
        (test):
        * microbenchmarks/for-in-int32-array-with-own-named.js: Added.
        (test):
        * microbenchmarks/for-in-int32-array.js: Added.
        (test):
        * microbenchmarks/for-in-int32-object-with-own-named-and-getters.js: Added.
        (test):
        * microbenchmarks/for-in-int32-object-with-own-named.js: Added.
        (test):
        * microbenchmarks/for-in-object-with-own-named.js: Added.
        (sum):
        (opaqueSet):
        * microbenchmarks/for-in-string-array.js: Added.
        (test):
        * microbenchmarks/for-of-iterate-array-map-set.js: Added.
        (sum):
        (let.generator):
        * stress/for-in-array-mode.js:
        (test):
        * stress/for-in-base-reassigned-later.js:
        * stress/for-in-delete-during-iteration.js:
        * stress/for-in-primitive-index-on-prototype.js: Added.
        (test):
        * stress/for-in-tests.js:
        * stress/has-own-property-structure-for-in-loop-correctness.js:
        (test5):

2021-08-05  Mikhail R. Gadelha  <mikhail@igalia.com>

        Assertion failure when checking array in DFG (32 bits)
        https://bugs.webkit.org/show_bug.cgi?id=228839

        Reviewed by Yusuke Suzuki.

        * stress/check-array-empty-32.js: Added.
        (a.b.catch.print.c):
        (a.b):
        (a.e):
        (a):

2021-08-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Yarr BoyerMoore search should support character-class
        https://bugs.webkit.org/show_bug.cgi?id=228613

        Reviewed by Saam Barati.

        * stress/regexp-bm-search-character-non-fixed-size.js: Added.
        (shouldBe):
        * stress/regexp-bm-search-many-candidate-zero-length.js: Added.
        (shouldBe):
        (regexp.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.0.1.2.3.4.5.6.7.8.9.t.v.n.r):
        * stress/regexp-bm-search-non-fixed-size.js: Added.
        (shouldBe):

2021-08-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update test262
        https://bugs.webkit.org/show_bug.cgi?id=228709

        Reviewed by Mark Lam.

        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Error/prototype/constructor/S15.11.4.1_A1_T1.js: Removed.
        * test262/test/built-ins/Error/prototype/message/15.11.4.3-1.js: Removed.
        * test262/test/built-ins/Error/prototype/message/S15.11.4.3_A1.js: Removed.
        * test262/test/built-ins/Error/prototype/message/S15.11.4.3_A2.js: Removed.
        * test262/test/built-ins/Error/prototype/name/15.11.4.2-1.js: Removed.
        * test262/test/built-ins/Error/prototype/name/S15.11.4.2_A1.js: Removed.
        * test262/test/built-ins/Error/prototype/name/S15.11.4.2_A2.js: Removed.
        * test262/test/built-ins/Error/prototype/toString/S15.11.4.4_A1.js: Removed.
        * test262/test/built-ins/TypedArray/prototype/findLast/return-abrupt-from-this-out-of-bounds.js:
        * test262/test/built-ins/TypedArray/prototype/findLastIndex/return-abrupt-from-this-out-of-bounds.js:
        * test262/test/harness/sta-error.js: Removed.
        * test262/test/harness/sta-override-error.js: Removed.
        * test262/test262-Revision.txt:

2021-07-29  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Upgrade test262
        https://bugs.webkit.org/show_bug.cgi?id=228627

        Reviewed by Ross Kirsling.

2021-07-30  Robin Morisset  <rmorisset@apple.com>

        Improve OSR entry into Wasm loops with arguments
        https://bugs.webkit.org/show_bug.cgi?id=228595

        Reviewed by Yusuke Suzuki.

        Just a straightforward test that counts to 1M in a loop, to exercise both OSR entry and a loop with an argument at the same time.
        100k iterations was not enough to reliably complete an OSR entry.

        * wasm/stress/osr-entry-with-loop-arguments.js: Added.
        (async test):

2021-07-30  Tadeu Zagallo  <tzagallo@apple.com>

        putInlineFastReplacingStaticPropertyIfNeeded should handle custom values
        https://bugs.webkit.org/show_bug.cgi?id=227963

        Reviewed by Alexey Shvayka.

        * stress/reflect-set-custom-value.js:

2021-07-29  Tadeu Zagallo  <tzagallo@apple.com>

        definePropertyOnReceiver should check if receiver canPerformFastPutInline
        https://bugs.webkit.org/show_bug.cgi?id=227963
        <rdar://80259710>

        Reviewed by Alexey Shvayka.

        * stress/reflect-set-custom-value.js: Added.

2021-07-29  Yusuke Suzuki  <ysuzuki@apple.com> and Alexey Shvayka  <shvaikalesh@gmail.com>

        [JSC] Legacy RegExp fields should be accessors
        https://bugs.webkit.org/show_bug.cgi?id=220233

        Reviewed by Tadeu Zagallo.

        * ChakraCore/test/Lib/forin_lib_v3.baseline-jsc:
        * microbenchmarks/assign-custom-setter-polymorphic.js:
        * microbenchmarks/assign-custom-setter.js:
        * microbenchmarks/custom-setter-getter-as-put-get-by-id.js:
        * microbenchmarks/custom-value-2.js:
        * microbenchmarks/custom-value.js:
        * microbenchmarks/get-custom-getter.js:
        * stress/custom-value-delete-property-1.js:
        * stress/custom-value-delete-property-2.js:
        * stress/custom-value-delete-property-3.js:
        * stress/object-assign-fast-path.js:
        * stress/reflect-set.js:
        * stress/regexp-constructor-dollar-getters-are-unique.js: Added.
        * stress/regexp-setter-realm.js: Added.
        * stress/static-put-in-prototype-chain.js: Added.
        * test262/config.yaml:
        * test262/expectations.yaml:

2021-07-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Yarr should perform BoyerMoore search
        https://bugs.webkit.org/show_bug.cgi?id=228301

        Reviewed by Saam Barati.

        * microbenchmarks/jquery-todomvc-regexp.js:
        * stress/regexp--bm-search-long-character.js: Added.
        (shouldBe):
        * stress/regexp--bm-search-long-map.js: Added.
        (shouldBe):
        * stress/regexp-bitvector-reuse.js: Added.
        (shouldBe):
        * stress/regexp-non-ascii-bm-search-character.js: Added.
        (shouldBe):
        * stress/regexp-non-ascii-bm-search-map.js: Added.
        (shouldBe):

2021-07-25  Alexey Shvayka  <shvaikalesh@gmail.com>

        Partly implement Function.prototype.{caller,arguments} reflection proposal
        https://bugs.webkit.org/show_bug.cgi?id=158116

        Reviewed by Yusuke Suzuki.

        * ChakraCore/test/strict/19.function.baseline:
        * ChakraCore/test/strict/22.callerCalleeArguments.baseline-jsc:
        * microbenchmarks/function-prototype-get.js: Added.
        * microbenchmarks/reflect-own-keys-function.js: Added.
        * stress/for-in-shadow-non-enumerable.js:
        * stress/function-hidden-as-caller.js:
        * stress/has-own-property-arguments.js:
        * stress/object-assign-fast-path.js:
        * stress/put-to-proto-chain-overrides-put.js:
        * stress/reflect-set.js:
        * test262/config.yaml: Skip 3 test cases that are now incorrect.
        * test262/expectations.yaml: Mark 2 test cases as passing.

2021-07-23  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add Speedometer2 jQuery-TodoMVC RegExp microbenchmark
        https://bugs.webkit.org/show_bug.cgi?id=228257

        Reviewed by Mark Lam.

        I instrumented JSC and extracted executed RegExp evaluations from Speedometer2/jQuery-TodoMVC
        to easily test RegExp performance.

        * microbenchmarks/jquery-todomvc-regexp.js: Added.
        (x00.test):

2021-07-23  Alexey Shvayka  <shvaikalesh@gmail.com>

        [JSC] Call custom accessors / values with their holder's global object
        https://bugs.webkit.org/show_bug.cgi?id=225997

        Reviewed by Yusuke Suzuki.

        * stress/custom-get-set-proto-chain-put.js:
        * stress/getter-setter-globalobject-in-ic-2.js: Added.

2021-07-22  Saam Barati  <sbarati@apple.com>

        JSTests/stress/test-out-of-memory shouldn't assume that we always OOM
        https://bugs.webkit.org/show_bug.cgi?id=228213

        Reviewed by Mark Lam.

        * stress/test-out-of-memory.js:

2021-07-22  Yusuke Suzuki  <ysuzuki@apple.com>

        Reduce iteration of microbenchmarks/memcpy-typed-loop.js
        https://bugs.webkit.org/show_bug.cgi?id=228214

        Reviewed by Saam Barati.

        Observing frequent timeout (e.g. https://ews-build.webkit.org/#/builders/1/builds/44698).
        We do not need to have such a large # of iterations.

        * microbenchmarks/memcpy-typed-loop.js:

2021-07-22  Saam Barati  <sbarati@apple.com>

        AirStackSlot's uint16_t byte size is too small
        https://bugs.webkit.org/show_bug.cgi?id=228193
        <rdar://80888059>

        Reviewed by Mark Lam.

        * stress/stack-slot-needs-to-use-more-than-uint16.js: Added.

2021-07-20  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] invalidParameterInstanceofSourceAppender should care direct call of Symbol.hasInstance
        https://bugs.webkit.org/show_bug.cgi?id=228075
        rdar://80762879

        Reviewed by Frédéric Wang.

        * stress/symbol-hasinstance-error.js: Added.
        (shouldThrow):
        (let.a):

2021-07-19  Mark Lam  <mark.lam@apple.com>

        DFG's parseIntResult() should check for negative zero.
        https://bugs.webkit.org/show_bug.cgi?id=228068
        rdar://80788603

        Reviewed by Yusuke Suzuki.

        * stress/dfg-parseIntResult-should-check-for-negative-zero.js: Added.

2021-07-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] InByStatus / InByVariant should visit CacheableIdentifier
        https://bugs.webkit.org/show_bug.cgi?id=228088
        rdar://80794604

        Reviewed by Mark Lam.

        * stress/in-by-variant-should-mark-cacheable-identifier.js: Added.
        (foo):
        (let.handler.has):

2021-07-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Simplify sampling-profiler-regexp.js test
        https://bugs.webkit.org/show_bug.cgi?id=228040

        Reviewed by Saam Barati.

        In this new test case, only thing we care is regexp appears on sampling-profiler regardless of whether the other functions are inlined / tail-called or not.
        We change the sampling-profiler/samplingProfiler.js runTest to add a mode which searches specific signature in the call tree.

        * stress/sampling-profiler-regexp.js:
        (platformSupportsSamplingProfiler):
        * stress/sampling-profiler/samplingProfiler.js:
        (doesTreeHaveStackTrace):
        (runTest):

2021-07-16  Saam Barati  <sbarati@apple.com>

        Grab the lock in FTL::Thunks::keyForSlowPathCallThunk
        https://bugs.webkit.org/show_bug.cgi?id=227988
        <rdar://problem/80627901>

        Reviewed by Mark Lam.

        * stress/thunks-hash-map-should-grab-lock.js: Added.

2021-07-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] RegExp::dumpToStream must not ref Strings since it is called concurrently
        https://bugs.webkit.org/show_bug.cgi?id=228031
        rdar://80686425

        Reviewed by Mark Lam.

        * stress/regexp-dump-concurrently.js: Added.
        (let.code):

2021-07-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] SamplingProfiler should recognize RegExp execution
        https://bugs.webkit.org/show_bug.cgi?id=201702

        Reviewed by Saam Barati.

        * stress/sampling-profiler-regexp.js: Added.
        (platformSupportsSamplingProfiler.getText):
        (platformSupportsSamplingProfiler.test):
        (platformSupportsSamplingProfiler.baz):
        (platformSupportsSamplingProfiler):
        * stress/sampling-profiler/samplingProfiler.js: Extend samplingProfiler to show better error information when VERBOSE = true.
        (doesTreeHaveStackTrace):

2021-07-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Harden defaultTimeZone retrieval
        https://bugs.webkit.org/show_bug.cgi?id=227996

        Reviewed by Mark Lam.

        * complex.yaml:
        * complex/intl-timezone-check.js: Added.
        (shouldBe):

2021-07-15  Mark Lam  <mark.lam@apple.com>

        JITWorklist::waitUntilAllPlansForVMAreReady() should also be notified when plans are cancelled.
        https://bugs.webkit.org/show_bug.cgi?id=228003
        rdar://78314543

        Reviewed by Yusuke Suzuki.

        * stress/waitUntilAllPlansForVMAreReady-should-be-notified-of-cancelled-plans-too.js: Added.

2021-07-14  Devin Rousso  <drousso@apple.com>

        Implement Array.prototype.findLast and Array.prototype.findLastIndex
        https://bugs.webkit.org/show_bug.cgi?id=227939

        Reviewed by Yusuke Suzuki.

        * stress/typedarray-findLast.js: Added.
        (keepEven):
        (keepEvenAndChange):
        (isBigEnoughAndException):

        * stress/typedarray-findLastIndex.js: Added.
        (keepEven):
        (keepEvenAndChange):
        (isBigEnoughAndException):

2021-07-14  Keith Miller  <keith_miller@apple.com>

        Unreviewed, test gardening.

        * stress/bit-op-with-object-returning-int32.js:
        * stress/bitwise-not-fixup-rules.js:
        (jscOptions):

2021-07-14  Mark Lam  <mark.lam@apple.com>

        Check for out of memory in JSC::globalFuncEscape() and JSC::globalFuncUnescape().
        https://bugs.webkit.org/show_bug.cgi?id=227962
        rdar://78392251

        Reviewed by Yusuke Suzuki.

        * stress/out-of-memory-in-globalFuncUnescape.js: Added.

2021-07-14  Mark Lam  <mark.lam@apple.com>

        Placate exception checker validation in operationObjectAssignUntyped.
        https://bugs.webkit.org/show_bug.cgi?id=227955
        rdar://80503746

        Reviewed by Michael Saboff.

        * stress/exception-check-in-operationObjectAssignUntyped.js: Added.

2021-07-14  Keith Miller  <keith_miller@apple.com>

        Fix more tests around fuzzing executable allocations
        https://bugs.webkit.org/show_bug.cgi?id=226663

        Reviewed by Mark Lam.

        * stress/bit-op-with-object-returning-int32.js:
        (numberOfDFGCompiles): Deleted.
        * stress/bitwise-not-fixup-rules.js:
        (jscOptions):
        (numberOfDFGCompiles): Deleted.

2021-07-12  Saam Barati  <sbarati@apple.com>

        Run some tests for fewer iterations to prevent test timeouts
        https://bugs.webkit.org/show_bug.cgi?id=227879

        Reviewed by Mark Lam.

        * microbenchmarks/get-by-val-negative-array-index.js:
        * microbenchmarks/memcpy-typed-loop-small.js:
        * microbenchmarks/put-by-val-negative-array-index.js:

2021-07-12  Saam Barati  <sbarati@apple.com>

        stress/wasm-loop-consistency.js should require the --useExecutableAllocationFuzz=false JSC option
        https://bugs.webkit.org/show_bug.cgi?id=227876

        Reviewed by Mark Lam.

        * stress/wasm-loop-consistency.js:

2021-07-10  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update test262
        https://bugs.webkit.org/show_bug.cgi?id=227851

        Reviewed by Mark Lam.

        * test262/config.yaml:
        * test262/expectations.yaml:
        * test262/harness/compareArray.js:
        (assert.compareArray):
        * test262/harness/regExpUtils.js:
        (buildString):
        (): Deleted.
        * test262/harness/sta.js:
        (Test262Error.thrower):
        * test262/harness/testIntl.js:
        (getLocaleSupportInfo):
        * test262/latest-changes-summary.txt:
        * test262/test/annexB/language/literals/regexp/legacy-octal-escape.js:
        * test262/test/built-ins/ArrayBuffer/options-maxbytelength-diminuitive.js: Added.
        * test262/test/built-ins/ArrayBuffer/options-maxbytelength-excessive.js: Added.
        * test262/test/built-ins/ArrayBuffer/options-maxbytelength-negative.js: Added.
        * test262/test/built-ins/ArrayBuffer/options-maxbytelength-object.js: Added.
        (options.maxByteLength.toString):
        (options.maxByteLength.valueOf):
        * test262/test/built-ins/ArrayBuffer/options-maxbytelength-poisoned.js: Added.
        (options.get maxByteLength):
        * test262/test/built-ins/ArrayBuffer/options-maxbytelength-undefined.js: Added.
        * test262/test/built-ins/ArrayBuffer/options-non-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/detached-buffer.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/invoked-as-accessor.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/invoked-as-func.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/length.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/name.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/prop-desc.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/return-maxbytelength-non-resizable.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/return-maxbytelength-resizable.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/this-has-no-arraybufferdata-internal.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/this-is-not-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/maxByteLength/this-is-sharedarraybuffer.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/detached-buffer.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/invoked-as-accessor.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/invoked-as-func.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/length.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/name.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/prop-desc.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/return-resizable.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/this-has-no-arraybufferdata-internal.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/this-is-not-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resizable/this-is-sharedarraybuffer.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/descriptor.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/extensible.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/length.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/name.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/new-length-excessive.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/new-length-negative.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/new-length-non-number.js: Added.
        (newLength.toString):
        (newLength.valueOf):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/nonconstructor.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-grow.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-same-size-zero-explicit.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-same-size-zero-implicit.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-same-size.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-shrink-zero-explicit.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-shrink-zero-implicit.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/resize-shrink.js: Added.
        (catch):
        * test262/test/built-ins/ArrayBuffer/prototype/resize/this-is-detached.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/this-is-not-arraybuffer-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/this-is-not-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/this-is-not-resizable-arraybuffer-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/resize/this-is-sharedarraybuffer.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/descriptor.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/extensible.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-larger.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-same.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-smaller.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-fixed-to-zero.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-resizable-to-larger.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-resizable-to-same.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-resizable-to-smaller.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/from-resizable-to-zero.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/length.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/name.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/new-length-excessive.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/new-length-non-number.js: Added.
        (newLength.toString):
        (newLength.valueOf):
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/nonconstructor.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/this-is-detached.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/this-is-not-arraybuffer-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/this-is-not-object.js: Added.
        * test262/test/built-ins/ArrayBuffer/prototype/transfer/this-is-sharedarraybuffer.js: Added.
        * test262/test/built-ins/DataView/prototype/byteLength/resizable-array-buffer-auto.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/byteLength/resizable-array-buffer-fixed.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/byteOffset/resizable-array-buffer-auto.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/byteOffset/resizable-array-buffer-fixed.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getBigInt64/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getBigUint64/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getFloat32/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getFloat64/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getInt16/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getInt32/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getInt8/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getUint16/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getUint32/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/getUint8/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setBigInt64/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setBigUint64/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setFloat32/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setFloat64/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setInt16/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setInt32/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setInt8/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setUint16/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setUint32/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/DataView/prototype/setUint8/resizable-buffer.js: Added.
        (catch):
        * test262/test/built-ins/Error/cause_abrupt.js:
        (has):
        (options.get cause):
        * test262/test/built-ins/Object/hasOwn/descriptor.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_exists.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter.js: Added.
        (base.get foo):
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_and_setter.js: Added.
        (base.get foo):
        (base.set foo):
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_and_setter_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_and_setter_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_and_setter_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_and_setter_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_getter_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_nonwritable_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_nonwritable_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_nonwritable_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_nonwritable_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_setter.js: Added.
        (base.set foo):
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_setter_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_setter_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_setter_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_setter_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_writable_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_writable_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_writable_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_inherited_writable_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_nonexistent.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter.js: Added.
        (o.get foo):
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_and_setter.js: Added.
        (o.get foo):
        (o.set foo):
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_and_setter_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_and_setter_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_and_setter_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_and_setter_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_getter_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_nonwritable_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_nonwritable_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_nonwriteable_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_nonwriteable_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_property_exists.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_setter.js: Added.
        (o.set foo):
        * test262/test/built-ins/Object/hasOwn/hasown_own_setter_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_setter_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_setter_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_setter_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_writable_configurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_writable_configurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_writable_nonconfigurable_enumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/hasown_own_writable_nonconfigurable_nonenumerable.js: Added.
        * test262/test/built-ins/Object/hasOwn/length.js: Added.
        * test262/test/built-ins/Object/hasOwn/name.js: Added.
        * test262/test/built-ins/Object/hasOwn/not-a-constructor.js: Added.
        * test262/test/built-ins/Object/hasOwn/prototype.js: Added.
        * test262/test/built-ins/Object/hasOwn/symbol_own_property.js: Added.
        * test262/test/built-ins/Object/hasOwn/symbol_property_toPrimitive.js: Added.
        (wrapper.Symbol.toPrimitive):
        * test262/test/built-ins/Object/hasOwn/symbol_property_toString.js: Added.
        (wrapper.toString):
        (wrapper.valueOf):
        * test262/test/built-ins/Object/hasOwn/symbol_property_valueOf.js: Added.
        (wrapper.valueOf):
        * test262/test/built-ins/Object/hasOwn/toobject_before_topropertykey.js: Added.
        (coercibleKey1.get toString):
        (coercibleKey1.get valueOf):
        (coercibleKey2.Symbol.toPrimitive):
        * test262/test/built-ins/Object/hasOwn/toobject_null.js: Added.
        * test262/test/built-ins/Object/hasOwn/toobject_undefined.js: Added.
        * test262/test/built-ins/Promise/race/resolve-element-function-extensible.js: Removed.
        * test262/test/built-ins/Promise/race/resolve-element-function-name.js: Removed.
        * test262/test/built-ins/Promise/race/resolve-element-function-nonconstructor.js: Removed.
        * test262/test/built-ins/Promise/race/resolve-element-function-prototype.js: Removed.
        * test262/test/built-ins/SharedArrayBuffer/options-maxbytelength-diminuitive.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/options-maxbytelength-excessive.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/options-maxbytelength-negative.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/options-maxbytelength-object.js: Added.
        (options.maxByteLength.toString):
        (options.maxByteLength.valueOf):
        * test262/test/built-ins/SharedArrayBuffer/options-maxbytelength-poisoned.js: Added.
        (options.get maxByteLength):
        * test262/test/built-ins/SharedArrayBuffer/options-maxbytelength-undefined.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/options-non-object.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/descriptor.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/extensible.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/grow-larger-size.js: Added.
        (catch):
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/grow-same-size.js: Added.
        (catch):
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/grow-smaller-size.js: Added.
        (catch):
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/length.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/name.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/new-length-excessive.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/new-length-negative.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/new-length-non-number.js: Added.
        (newLength.toString):
        (newLength.valueOf):
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/nonconstructor.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/this-is-not-arraybuffer-object.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/this-is-not-object.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/this-is-not-resizable-arraybuffer-object.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/grow/this-is-sharedarraybuffer.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/invoked-as-accessor.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/invoked-as-func.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/length.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/name.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/prop-desc.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/return-growable.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/this-has-no-arraybufferdata-internal.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/this-is-arraybuffer.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/growable/this-is-not-object.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/invoked-as-accessor.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/invoked-as-func.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/length.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/name.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/prop-desc.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/return-maxbytelength-growable.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/return-maxbytelength-non-growable.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/this-has-no-arraybufferdata-internal.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/this-is-arraybuffer.js: Added.
        * test262/test/built-ins/SharedArrayBuffer/prototype/maxByteLength/this-is-not-object.js: Added.
        * test262/test/built-ins/Symbol/for/description.js: Added.
        (symbol.Symbol.toString):
        * test262/test/built-ins/Temporal/now/instant/extensible.js: Added.
        * test262/test/built-ins/Temporal/now/instant/length.js: Added.
        * test262/test/built-ins/Temporal/now/instant/name.js: Added.
        * test262/test/built-ins/Temporal/now/instant/not-a-constructor.js: Added.
        * test262/test/built-ins/Temporal/now/instant/prop-desc.js: Added.
        * test262/test/built-ins/Temporal/now/instant/return-value-distinct.js: Added.
        * test262/test/built-ins/Temporal/now/instant/return-value-prototype.js: Added.
        * test262/test/built-ins/Temporal/now/instant/return-value-value.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/extensible.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/length.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/name.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/new-object.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/not-a-constructor.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/prop-desc.js: Added.
        * test262/test/built-ins/Temporal/now/timeZone/return-value.js: Added.
        * test262/test/built-ins/TypedArray/prototype/at/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/byteLength/resizable-array-buffer-auto.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/byteLength/resizable-array-buffer-fixed.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/byteOffset/resizable-array-buffer-auto.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/byteOffset/resizable-array-buffer-fixed.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/copyWithin/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/entries/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/every/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.every):
        * test262/test/built-ins/TypedArray/prototype/fill/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/filter/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.filter):
        * test262/test/built-ins/TypedArray/prototype/find/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.find):
        * test262/test/built-ins/TypedArray/prototype/findIndex/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.findIndex):
        * test262/test/built-ins/TypedArray/prototype/forEach/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.forEach):
        * test262/test/built-ins/TypedArray/prototype/includes/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/indexOf/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/join/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/keys/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/lastIndexOf/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/length/resizable-array-buffer-auto.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/length/resizable-array-buffer-fixed.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/map/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.map):
        * test262/test/built-ins/TypedArray/prototype/reduce/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.reduce):
        * test262/test/built-ins/TypedArray/prototype/reduceRight/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.reduceRight):
        * test262/test/built-ins/TypedArray/prototype/reverse/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/set/typedarray-arg-set-values-same-buffer-same-type-resized.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/set/typedarray-arg-target-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/slice/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/some/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        (testWithTypedArrayConstructors.TA.array.some):
        * test262/test/built-ins/TypedArray/prototype/sort/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/toLocaleString/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArray/prototype/values/return-abrupt-from-this-out-of-bounds.js: Added.
        (testWithTypedArrayConstructors.TA.catch):
        * test262/test/built-ins/TypedArrayConstructors/ctors/buffer-arg/excessive-offset-throws-resizable-ab.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/out-of-bounds-when-species-retrieved-different-type.js: Added.
        (testWithTypedArrayConstructors.):
        (testWithTypedArrayConstructors.get var):
        (testWithTypedArrayConstructors.onGetSpecies):
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/out-of-bounds-when-species-retrieved-same-type.js: Added.
        (testWithTypedArrayConstructors.):
        (testWithTypedArrayConstructors.get var):
        (testWithTypedArrayConstructors.onGetSpecies):
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js: Removed.
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-throws-realm.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-throws.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-not-numeric-index-throws.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-accessor-desc-throws.js: Added.
        (testWithBigIntTypedArrayConstructors.):
        (testWithBigIntTypedArrayConstructors.get assert):
        (testWithBigIntTypedArrayConstructors.set assert):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-configurable.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-configurable-throws.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-enumerable-throws.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-not-writable-throws.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-realm.js: Removed.
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-throws-realm.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-throws.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-not-numeric-index-throws.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-accessor-desc-throws.js: Added.
        (testWithTypedArrayConstructors.):
        (testWithTypedArrayConstructors.get assert):
        (testWithTypedArrayConstructors.set assert):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-configurable.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-not-configurable-throws.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-not-enumerable-throws.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-not-writable-throws.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-symbol.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/HasProperty/resizable-array-buffer-auto.js: Added.
        (inspect):
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/HasProperty/resizable-array-buffer-fixed.js: Added.
        (inspect):
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/integer-indexes-resizable-array-buffer-auto.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/OwnPropertyKeys/integer-indexes-resizable-array-buffer-fixed.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/intl402/DateTimeFormat/constructor-options-style-conflict.js: Added.
        * test262/test/intl402/Locale/prototype/calendars/branding.js: Added.
        * test262/test/intl402/Locale/prototype/calendars/name.js: Added.
        * test262/test/intl402/Locale/prototype/calendars/output-array.js: Added.
        * test262/test/intl402/Locale/prototype/calendars/prop-desc.js: Added.
        * test262/test/intl402/Locale/prototype/collations/branding.js: Added.
        * test262/test/intl402/Locale/prototype/collations/name.js: Added.
        * test262/test/intl402/Locale/prototype/collations/output-array-values.js: Added.
        * test262/test/intl402/Locale/prototype/collations/output-array.js: Added.
        * test262/test/intl402/Locale/prototype/collations/prop-desc.js: Added.
        * test262/test/intl402/Locale/prototype/hourCycles/branding.js: Added.
        * test262/test/intl402/Locale/prototype/hourCycles/name.js: Added.
        * test262/test/intl402/Locale/prototype/hourCycles/output-array-values.js: Added.
        * test262/test/intl402/Locale/prototype/hourCycles/output-array.js: Added.
        * test262/test/intl402/Locale/prototype/hourCycles/prop-desc.js: Added.
        * test262/test/intl402/Locale/prototype/numberingSystems/branding.js: Added.
        * test262/test/intl402/Locale/prototype/numberingSystems/name.js: Added.
        * test262/test/intl402/Locale/prototype/numberingSystems/output-array.js: Added.
        * test262/test/intl402/Locale/prototype/numberingSystems/prop-desc.js: Added.
        * test262/test/intl402/Locale/prototype/textInfo/branding.js: Added.
        * test262/test/intl402/Locale/prototype/textInfo/name.js: Added.
        * test262/test/intl402/Locale/prototype/textInfo/output-object-keys.js: Added.
        * test262/test/intl402/Locale/prototype/textInfo/output-object.js: Added.
        * test262/test/intl402/Locale/prototype/textInfo/prop-desc.js: Added.
        * test262/test/intl402/Locale/prototype/timeZones/branding.js: Added.
        * test262/test/intl402/Locale/prototype/timeZones/name.js: Added.
        * test262/test/intl402/Locale/prototype/timeZones/output-array-sorted.js: Added.
        * test262/test/intl402/Locale/prototype/timeZones/output-array.js: Added.
        * test262/test/intl402/Locale/prototype/timeZones/output-undefined.js: Added.
        * test262/test/intl402/Locale/prototype/timeZones/prop-desc.js: Added.
        * test262/test/intl402/Locale/prototype/weekInfo/branding.js: Added.
        * test262/test/intl402/Locale/prototype/weekInfo/name.js: Added.
        * test262/test/intl402/Locale/prototype/weekInfo/output-object-keys.js: Added.
        * test262/test/intl402/Locale/prototype/weekInfo/output-object.js: Added.
        * test262/test/intl402/Locale/prototype/weekInfo/prop-desc.js: Added.
        * test262/test/intl402/Segmenter/constructor/supportedLocalesOf/locales-specific.js:
        * test262/test/intl402/Segmenter/prototype/segment/containing/iswordlike.js:
        (other_granularities.forEach):
        * test262/test/intl402/Segmenter/prototype/segment/containing/one-index.js:
        (toString):
        (valueOf):
        (Symbol.toPrimitive):
        * test262/test/intl402/Segmenter/prototype/segment/containing/out-of-bound-index.js:
        (toString):
        (valueOf):
        (Symbol.toPrimitive):
        * test262/test/intl402/Segmenter/prototype/segment/containing/word-iswordlike.js:
        (inputs.forEach):
        * test262/test/intl402/Segmenter/prototype/segment/containing/zero-index.js:
        (toString):
        (valueOf):
        (Symbol.toPrimitive):
        * test262/test/intl402/Segmenter/prototype/segment/segment-grapheme-iterable.js:
        (const.v.of.seg.segment):
        * test262/test/intl402/Segmenter/prototype/segment/segment-sentence-iterable.js:
        (const.v.of.seg.segment):
        * test262/test/intl402/Segmenter/prototype/segment/segment-word-iterable.js:
        (const.v.of.seg.segment):
        * test262/test/intl402/fallback-locales-are-supported.js:
        (testWithIntlConstructors):
        * test262/test/intl402/supportedLocalesOf-consistent-with-resolvedOptions.js:
        (testWithIntlConstructors):
        * test262/test/intl402/supportedLocalesOf-unicode-extensions-ignored.js:
        (testWithIntlConstructors.):
        (testWithIntlConstructors):
        * test262/test/language/expressions/arrow-function/extensibility.js: Added.
        (assert.Object.isExtensible):
        * test262/test/language/expressions/arrow-function/syntax/arrowparameters-cover-initialize-2.js:
        * test262/test/language/expressions/assignment/S11.13.1_A7_T1.js: Removed.
        * test262/test/language/expressions/assignment/S11.13.1_A7_T2.js: Removed.
        * test262/test/language/expressions/assignment/target-member-computed-reference-null.js: Added.
        (DummyError):
        (prop):
        (expr):
        (prop.toString):
        * test262/test/language/expressions/assignment/target-member-computed-reference-undefined.js: Added.
        (DummyError):
        (prop):
        (expr):
        (prop.toString):
        * test262/test/language/expressions/assignment/target-member-identifier-reference-null.js: Added.
        * test262/test/language/expressions/assignment/target-member-identifier-reference-undefined.js: Added.
        * test262/test/language/expressions/assignment/target-super-computed-reference-null.js: Added.
        (C.m):
        (C):
        * test262/test/language/expressions/assignment/target-super-identifier-reference-null.js: Added.
        (C.m):
        (C):
        * test262/test/language/expressions/delete/member-computed-reference-null.js: Added.
        * test262/test/language/expressions/delete/member-computed-reference-undefined.js: Added.
        * test262/test/language/expressions/delete/member-identifier-reference-null.js: Added.
        * test262/test/language/expressions/delete/member-identifier-reference-undefined.js: Added.
        * test262/test/language/expressions/delete/super-property-null-base.js: Added.
        (C.m):
        (C):
        * test262/test/language/expressions/dynamic-import/2nd-param-assert-enumeration-abrupt.js: Added.
        (options.ownKeys):
        (options.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-assert-enumeration.js: Added.
        (options.ownKeys):
        (options.get _):
        (options.getOwnPropertyDescriptor):
        (options.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-assert-non-object.js: Added.
        (test):
        (string_appeared_here.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-assert-undefined.js: Added.
        (then):
        * test262/test/language/expressions/dynamic-import/2nd-param-assert-value-abrupt.js: Added.
        (assert.get string_appeared_here):
        (then):
        * test262/test/language/expressions/dynamic-import/2nd-param-assert-value-non-string.js: Added.
        (test):
        (string_appeared_here.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-await-expr.js: Added.
        * test262/test/language/expressions/dynamic-import/2nd-param-await-ident.js: Added.
        (await):
        (await.undefined.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-evaluation-abrupt-return.js: Added.
        (iter):
        * test262/test/language/expressions/dynamic-import/2nd-param-evaluation-abrupt-throw.js: Added.
        (throwError):
        * test262/test/language/expressions/dynamic-import/2nd-param-evaluation-sequence.js: Added.
        * test262/test/language/expressions/dynamic-import/2nd-param-get-assert-error.js: Added.
        (options.get assert):
        (options.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-in.js: Added.
        (promise.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-non-object.js: Added.
        (test):
        (string_appeared_here.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-trailing-comma-fulfill.js: Added.
        (then):
        * test262/test/language/expressions/dynamic-import/2nd-param-trailing-comma-reject.js: Added.
        (import.toString):
        (then):
        * test262/test/language/expressions/dynamic-import/2nd-param-yield-expr.js: Added.
        (iter):
        (promise.then):
        * test262/test/language/expressions/dynamic-import/2nd-param-yield-ident-invalid.js: Added.
        * test262/test/language/expressions/dynamic-import/2nd-param-yield-ident-valid.js: Added.
        (yield.then):
        * test262/test/language/expressions/dynamic-import/2nd-param_FIXTURE.js: Added.
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-args.js:
        (let.f):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-args.js:
        (async await):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-not-extensible-args.js:
        (async await):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-return-await-not-extensible-no-trailing-comma.js: Removed.
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args.js:
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-not-extensible-args.js:
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-not-extensible-args.js:
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-return-await-not-extensible-no-trailing-comma.js: Removed.
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-args.js:
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-args.js:
        (DONOTEVALUATE):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-function-not-extensible-args.js:
        (fn):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-args.js:
        (fn):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-if-braceless-not-extensible-no-trailing-comma.js: Removed.
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-with-expression-not-extensible-args.js:
        (with.import):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-args.js:
        (with):
        * test262/test/language/expressions/dynamic-import/syntax/invalid/top-level-not-extensible-args.js:
        * test262/test/language/expressions/dynamic-import/syntax/invalid/top-level-not-extensible-no-trailing-comma.js: Removed.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-trailing-comma-first.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-assignment-expression-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-no-trailing-comma.js.
        (let.f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-arrow-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-not-extensible-args.js.
        (let.f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-await-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-arrow-function-await-not-extensible-args.js.
        (async await):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-trailing-comma-first.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-arrow-function-return-await-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args.js.
        (async await):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-trailing-comma-first.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-await-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-trailing-comma-first.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-return-await-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-args.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-await-not-extensible-no-trailing-comma.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-function-trailing-comma-second.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-function-not-extensible-no-trailing-comma.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-no-trailing-comma.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-async-gen-await-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-async-gen-await-not-extensible-args.js.
        (async f):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-labeled-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-block-labeled-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-block-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-block-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-do-while-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-do-while-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-do-while-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-braceless-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-else-braceless-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-else-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-else-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-return-trailing-comma-first.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-args.js.
        (fn):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-return-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-args.js.
        (fn):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-function-not-extensible-no-trailing-comma.js.
        (fn):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-function-trailing-comma-second.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-function-return-not-extensible-no-trailing-comma.js.
        (fn):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-braceless-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-arrow-assignment-expression-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-if-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-if-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-while-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-no-trailing-comma.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-while-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-while-not-extensible-args.js.
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-with-expression-trailing-comma-first.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-args.js.
        (with.import):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-with-expression-trailing-comma-second.js: Copied from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-args.js.
        (with.import):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-with-trailing-comma-first.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-with-not-extensible-no-trailing-comma.js.
        (with):
        * test262/test/language/expressions/dynamic-import/syntax/valid/nested-with-trailing-comma-second.js: Renamed from JSTests/test262/test/language/expressions/dynamic-import/syntax/invalid/nested-with-expression-not-extensible-no-trailing-comma.js.
        (with):
        * test262/test/language/expressions/dynamic-import/syntax/valid/top-level-trailing-comma-first.js: Added.
        * test262/test/language/expressions/dynamic-import/syntax/valid/top-level-trailing-comma-second.js: Added.
        * test262/test/language/expressions/dynamic-import/trailing-comma-fulfill.js: Added.
        (then):
        * test262/test/language/expressions/dynamic-import/trailing-comma-reject.js: Added.
        (import.toString):
        (then):
        * test262/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence-8.js:
        * test262/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence-9.js:
        * test262/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js:
        * test262/test/language/import/json-extensibility-array.js: Added.
        * test262/test/language/import/json-extensibility-object.js: Added.
        * test262/test/language/import/json-idempotency-indirect_FIXTURE.js: Added.
        * test262/test/language/import/json-idempotency.js: Added.
        (then):
        * test262/test/language/import/json-invalid.js: Added.
        * test262/test/language/import/json-named-bindings.js: Added.
        * test262/test/language/import/json-value-array.js: Added.
        * test262/test/language/import/json-value-boolean.js: Added.
        * test262/test/language/import/json-value-null.js: Added.
        * test262/test/language/import/json-value-number.js: Added.
        * test262/test/language/import/json-value-object.js: Added.
        * test262/test/language/import/json-value-string.js: Added.
        * test262/test/language/import/json-via-namespace.js: Added.
        * test262/test/language/literals/numeric/legacy-octal-integer-strict.js:
        * test262/test/language/literals/numeric/legacy-octal-integer.js: Renamed from JSTests/test262/test/annexB/language/literals/numeric/legacy-octal-integer.js.
        * test262/test/language/literals/numeric/non-octal-decimal-integer-strict.js:
        * test262/test/language/literals/numeric/non-octal-decimal-integer.js: Renamed from JSTests/test262/test/annexB/language/literals/numeric/non-octal-decimal-integer.js.
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-1-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-2-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-3-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-4-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-5-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-6-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-7-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-8-non-strict.js: Added.
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-8-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-8-strict.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-9-non-strict.js: Added.
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-9-strict-explicit-pragma.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-9-strict.js:
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-strict.js:
        * test262/test/language/literals/string/legacy-octal-escape-sequence-strict.js:
        * test262/test/language/literals/string/legacy-octal-escape-sequence.js: Renamed from JSTests/test262/test/annexB/language/literals/string/legacy-octal-escape-sequence.js.
        * test262/test/language/module-code/early-dup-assert-key-export.js: Added.
        * test262/test/language/module-code/early-dup-assert-key-import-nobinding.js: Added.
        * test262/test/language/module-code/early-dup-assert-key-import-withbinding.js: Added.
        * test262/test/language/module-code/early-export-ill-formed-string.js:
        * test262/test/language/module-code/eval-gtbndng-indirect-faux-assertion.js: Added.
        * test262/test/language/module-code/import-assertion-1_FIXTURE.js: Added.
        * test262/test/language/module-code/import-assertion-2_FIXTURE.js: Added.
        * test262/test/language/module-code/import-assertion-3_FIXTURE.js: Added.
        * test262/test/language/module-code/import-assertion-empty.js: Added.
        * test262/test/language/module-code/import-assertion-key-identifiername.js: Added.
        * test262/test/language/module-code/import-assertion-key-string-double.js: Added.
        * test262/test/language/module-code/import-assertion-key-string-single.js: Added.
        * test262/test/language/module-code/import-assertion-many.js: Added.
        * test262/test/language/module-code/import-assertion-newlines.js: Added.
        * test262/test/language/module-code/import-assertion-trlng-comma.js: Added.
        * test262/test/language/module-code/import-assertion-value-string-double.js: Added.
        * test262/test/language/module-code/import-assertion-value-string-single.js: Added.
        * test262/test/language/module-code/instn-star-as-props-dflt-skip.js:
        * test262/test/language/module-code/top-level-await/dfs-invariant-async_FIXTURE.js: Added.
        * test262/test/language/module-code/top-level-await/dfs-invariant-direct-1_FIXTURE.js: Added.
        * test262/test/language/module-code/top-level-await/dfs-invariant-direct-2_FIXTURE.js: Added.
        * test262/test/language/module-code/top-level-await/dfs-invariant-indirect_FIXTURE.js: Added.
        * test262/test/language/module-code/top-level-await/dfs-invariant.js: Added.
        * test262/test/language/statements/for-of/head-lhs-async-escaped.js: Added.
        * test262/test/language/statements/for-of/head-lhs-async-parens.js: Added.
        * test262/test262-Revision.txt:

2021-07-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update Intl.Locale test after AppleICU update
        https://bugs.webkit.org/show_bug.cgi?id=227788

        Reviewed by Keith Miller.

        This patch fixes Intl.Locale test since AppleICU fixes the ICU bug and starts producing the right results.

        * stress/intl-long-locale-id-maximize-minimize.js:
        (shouldBe):

2021-07-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Fix Object.assign fast path to accept undefined/null
        https://bugs.webkit.org/show_bug.cgi?id=227769
        rdar://80264271

        Reviewed by Saam Barati.

        * stress/object-assign-undefined.js: Added.
        (test):

2021-07-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r279546, r279554, r279558 and r279567.
        https://bugs.webkit.org/show_bug.cgi?id=227732

        Speedometer/jQuery-TodoMVC 2-3% regression

        Reverted changesets:

        "[WebIDL] Rework runtime enabled properties leveraging
        PropertyCallback"
        https://bugs.webkit.org/show_bug.cgi?id=227275
        https://commits.webkit.org/r279546

        "[WebIDL] Generate constructor's hash table in
        GenerateConstructorHelperMethods"
        https://bugs.webkit.org/show_bug.cgi?id=227668
        https://commits.webkit.org/r279554

        "[WebIDL] Simplify generation of runtime conditionally read-
        write attributes"
        https://bugs.webkit.org/show_bug.cgi?id=227672
        https://commits.webkit.org/r279558

        "Use AbortSignal's [PrivateIdentifier] whenSignalAborted()
        static method"
        https://bugs.webkit.org/show_bug.cgi?id=227673
        https://commits.webkit.org/r279567

2021-07-06  Saam Barati  <sbarati@apple.com>

        Run microbenchmarks/memcpy-typed-loop-small.js for fewer iterations to avoid timeouts
        https://bugs.webkit.org/show_bug.cgi?id=227717

        Reviewed by Robin Morisset.

        * microbenchmarks/memcpy-typed-loop-small.js:

2021-07-05  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize Object.assign and putDirectInternal
        https://bugs.webkit.org/show_bug.cgi?id=227677

        Reviewed by Filip Pizlo.

        * microbenchmarks/object-assign-replace.js: Added.
        (test):
        * microbenchmarks/object-assign-transition.js: Added.
        (test):

2021-07-03  Alexey Shvayka  <shvaikalesh@gmail.com>

        [WebIDL] Rework runtime enabled properties leveraging PropertyCallback
        https://bugs.webkit.org/show_bug.cgi?id=227275

        Reviewed by Saam Barati.

        * stress/lazy-property-cross-realm.js: Added.
        * stress/lazy-property-get-cache.js: Added.
        * stress/lazy-property-gopd.js: Added.
        * stress/lazy-property-hasownproperty-cache.js: Added.
        * stress/lazy-property-put-cache.js: Added.

2021-06-30  Saam Barati  <sbarati@apple.com>

        Turn off data ICs by default
        https://bugs.webkit.org/show_bug.cgi?id=227334
        <rdar://problem/79802812>

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/deltablue-varargs.js:
        * microbenchmarks/richards-try-catch.js:

2021-06-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Stop generating default parameter code if class constructor is called without 'new'
        https://bugs.webkit.org/show_bug.cgi?id=227547
        rdar://78821453

        Reviewed by Mark Lam.

        * stress/calling-non-callable-constructors.js: Added.
        (shouldThrow):

2021-06-29  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Private names should be handled by usedVariables mechanism
        https://bugs.webkit.org/show_bug.cgi?id=227476
        rdar://76049469

        Reviewed by Saam Barati.

2021-06-30  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unskip interpreter-wasm.js on ARM and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=227295

        Reviewed by Caio Araujo Neponoceno de Lima.

        Changed the testcase to be guarded by $vm.isWasmSupported(), so the
        test will be executed once wasm is available in the arch

        * microbenchmarks/interpreter-wasm.js:
        (key.in.Module.Module.hasOwnProperty): Deleted.
        (quit_): Deleted.
        (locateFile): Deleted.
        (ENVIRONMENT_IS_NODE.read_): Deleted.
        (ENVIRONMENT_IS_NODE.readBinary): Deleted.
        (ENVIRONMENT_IS_NODE.quit_): Deleted.
        (ENVIRONMENT_IS_NODE.Module.string_appeared_here): Deleted.
        (else.read_): Deleted.
        (else.readBinary): Deleted.
        (else.quit_): Deleted.
        (else): Deleted.
        (else.xhr.onload): Deleted.
        (else.readAsync): Deleted.
        (else.setWindowTitle): Deleted.
        (key.in.moduleOverrides.moduleOverrides.hasOwnProperty): Deleted.
        (dynamicAlloc): Deleted.
        (getNativeTypeSize): Deleted.
        (warnOnce): Deleted.
        (convertJsFunctionToWasm): Deleted.
        (addFunctionWasm): Deleted.
        (removeFunctionWasm): Deleted.
        (): Deleted.
        (setTempRet0): Deleted.
        (setValue): Deleted.
        (assert): Deleted.
        (getCFunc): Deleted.
        (toC.string_appeared_here): Deleted.
        (convertReturnValue): Deleted.
        (ccall): Deleted.
        (UTF8ArrayToString): Deleted.
        (UTF8ToString): Deleted.
        (stringToUTF8Array): Deleted.
        (stringToUTF8): Deleted.
        (lengthBytesUTF8): Deleted.
        (allocateUTF8OnStack): Deleted.
        (writeArrayToMemory): Deleted.
        (writeAsciiToMemory): Deleted.
        (updateGlobalBufferAndViews): Deleted.
        (callRuntimeCallbacks): Deleted.
        (preRun): Deleted.
        (initRuntime): Deleted.
        (preMain): Deleted.
        (exitRuntime): Deleted.
        (postRun): Deleted.
        (addOnPreRun): Deleted.
        (addOnPostRun): Deleted.
        (addRunDependency): Deleted.
        (removeRunDependency): Deleted.
        (hasPrefix): Deleted.
        (isDataURI): Deleted.
        (isFileURI): Deleted.
        (getBinary): Deleted.
        (getBinaryPromise): Deleted.
        (createWasm.receiveInstance): Deleted.
        (createWasm.receiveInstantiatedSource): Deleted.
        (createWasm.instantiateArrayBuffer): Deleted.
        (createWasm.instantiateAsync.): Deleted.
        (createWasm.instantiateAsync): Deleted.
        (createWasm): Deleted.
        (__ATINIT__.push.func): Deleted.
        (demangle): Deleted.
        (demangleAll): Deleted.
        (_emscripten_get_sbrk_ptr): Deleted.
        (_emscripten_memcpy_big): Deleted.
        (abortOnCannotGrowMemory): Deleted.
        (_emscripten_resize_heap): Deleted.
        (PATH.splitPath): Deleted.
        (PATH.normalizeArray): Deleted.
        (PATH.normalize): Deleted.
        (PATH.dirname): Deleted.
        (PATH.basename): Deleted.
        (PATH.extname): Deleted.
        (PATH.join): Deleted.
        (PATH.join2): Deleted.
        (SYSCALLS.printChar): Deleted.
        (SYSCALLS.getStr): Deleted.
        (SYSCALLS.get64): Deleted.
        (_fd_write): Deleted.
        (_setTempRet0): Deleted.
        (___wasm_call_ctors.Module.string_appeared_here): Deleted.
        (_main.Module.string_appeared_here): Deleted.
        (_malloc.Module.string_appeared_here): Deleted.
        (___errno_location.Module.string_appeared_here): Deleted.
        (_free.Module.string_appeared_here): Deleted.
        (stackSave.Module.string_appeared_here): Deleted.
        (stackAlloc.Module.string_appeared_here): Deleted.
        (stackRestore.Module.string_appeared_here): Deleted.
        (__growWasmMemory.Module.string_appeared_here): Deleted.
        (dynCall_ii.Module.string_appeared_here): Deleted.
        (dynCall_iiii.Module.string_appeared_here): Deleted.
        (dynCall_jiji.Module.string_appeared_here): Deleted.
        (ExitStatus): Deleted.
        (dependenciesFulfilled): Deleted.
        (callMain): Deleted.
        (run.doRun): Deleted.
        (run): Deleted.
        (exit): Deleted.

2021-06-25  Guillaume Emont  <guijemont@igalia.com>

        Unskip stress/call-apply-exponential-bytecode-size.js on most platforms
        https://bugs.webkit.org/show_bug.cgi?id=227354

        Reviewed by Yusuke Suzuki.

        Instead of skipping, we increase the JIT memory size for this test on
        platforms that have less than 64 MB by default.

        * stress/call-apply-exponential-bytecode-size.js:

2021-06-25  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unskip structure-storedPrototype-should-only-assert-on-the-mutator-thread.js on arm and mips
        https://bugs.webkit.org/show_bug.cgi?id=227222

        Tested with 50 iterations in both arm and mips.

        Unreviewed Gardening.

        * stress/structure-storedPrototype-should-only-assert-on-the-mutator-thread.js:

2021-06-25  Paulo Matos  <pmatos@igalia.com>

        Unskip materialized-regexp-has-correct-last-index-set-by-match on arm and mips
        https://bugs.webkit.org/show_bug.cgi?id=227213

        Unreviewed Gardening.

        * stress/materialized-regexp-has-correct-last-index-set-by-match.js:

2021-06-25  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unskip materialize-regexp-cyclic-regexp.js on ARM and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=227223

        Tested with 50 iterations in both arm and mips.

        Unreviewed Gardening.

        * stress/materialize-regexp-cyclic-regexp.js:

2021-06-24  Asumu Takikawa  <asumu@igalia.com>

        [WASM-Function-References] Add support for (ref null? $t) type constructor
        https://bugs.webkit.org/show_bug.cgi?id=226296

        Adds additional tests for uses of `(ref $t)` and `(ref null $t)`
        types, including with non-null extern/funcrefs.

        Reviewed by Yusuke Suzuki.

        * wasm/function-references/ref_types.js: Added.
        (module):
        (async testRefTypeLocal):
        (async testNonNullRefTypeLocal):
        (async testRefTypeInSignature):
        (async testRefTypeParamCheck):
        (async testRefGlobalCheck):
        (async testExternFuncrefNonNullCheck):
        (async testExternrefCompatibility):
        (async testNonNullExternrefIncompatible):
        (async testFuncrefCompatibility):
        (async testNonNullFuncrefIncompatible):
        * wasm/wasm.json:

2021-06-24  Guillaume Emont  <guijemont@igalia.com>

        Improve our checking of NaN values in DataView tests
        https://bugs.webkit.org/show_bug.cgi?id=227347

        Reviewed by Yusuke Suzuki.

        This allows the merging of dataview-jit-set-nan.js and
        dataview-jit-set.js.

        * stress/dataview-jit-set-nan.js: Removed.
        * stress/dataview-jit-set.js:
        (test5):
        (test6):

2021-06-24  Mikhail R. Gadelha  <mikhail@igalia.com>

        Unskip arguments-properties-order.js on MIPS 
        https://bugs.webkit.org/show_bug.cgi?id=227254

        No failures after 50 iterations. Also tested on Loongson 3A4000 (in 32-bits mode).

        Unreviewed Gardening.

        * stress/arguments-properties-order.js:

2021-06-24  Xan Lopez  <xan@igalia.com>

        [JSC] Implement returnEarlyFromInfiniteLoopsForFuzzing for 32bits
        https://bugs.webkit.org/show_bug.cgi?id=227290

        Reviewed by Mark Lam.

        Now that we can return early from infinite (actual or just
        extremely long running) loops on 32bits, we can pass these tests.

        * stress/construct-return-early-from-infinite-loop-for-fuzzer.js: unskip for 32bits.
        * stress/early-return-from-builtin2.js: ditto.
        * stress/validate-does-gc-with-return-early-from-infinite-loop-2.js: ditto.
        * stress/validate-does-gc-with-return-early-from-infinite-loop.js: ditto.

2021-06-23  Saam Barati  <sbarati@apple.com>

        Bound stress/put-by-id-flags with a fixed number of iterations
        https://bugs.webkit.org/show_bug.cgi?id=227305

        Reviewed by Mark Lam.

        * stress/put-by-id-flags.js:
        (numberOfDFGCompiles): Deleted.

2021-06-23  Saam Barati  <sbarati@apple.com>

        Run typedarray-intrinsic-getters-change-prototype for a fixed set of iterations
        https://bugs.webkit.org/show_bug.cgi?id=227304

        Reviewed by Mark Lam.

        * stress/typedarray-intrinsic-getters-change-prototype.js:
        (body):

2021-06-22  Saam Barati  <sbarati@apple.com>

        Don't assume stress/out-of-memory-while-constructing-BytecodeGenerator.js will OOM
        https://bugs.webkit.org/show_bug.cgi?id=227263

        Reviewed by Yusuke Suzuki.

        * stress/out-of-memory-while-constructing-BytecodeGenerator.js:

2021-06-22  Saam Barati  <sbarati@apple.com>

        Run detach-buffer-during-iteration for fewer iterations
        https://bugs.webkit.org/show_bug.cgi?id=227262

        Reviewed by Yusuke Suzuki.

        * stress/detach-buffer-during-iteration.js:

2021-06-22  Saam Barati  <sbarati@apple.com>

        Run microbenchmarks/interpreter-wasm under runDefault only
        https://bugs.webkit.org/show_bug.cgi?id=227261

        Reviewed by Robin Morisset.

        * microbenchmarks/interpreter-wasm.js:

2021-06-22  Saam Barati  <sbarati@apple.com>

        jitCompileAndSetHeuristics shouldn't return true when we fail to compile
        https://bugs.webkit.org/show_bug.cgi?id=227155

        Reviewed by Tadeu Zagallo.

        * microbenchmarks/interpreter-wasm.js:
        * microbenchmarks/memcpy-wasm-large.js:
        * microbenchmarks/memcpy-wasm-medium.js:
        * microbenchmarks/memcpy-wasm-small.js:
        * microbenchmarks/memcpy-wasm.js:
        * stress/wasm-error-message-cross-threads.js:

2021-06-22  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unskip stress/elidable-new-object-roflcopter-then-exit.js on MIPS/ARM
        https://bugs.webkit.org/show_bug.cgi?id=227251

        Unreviewed gardening.

        No failures on either platform after 100 iterations.

        * stress/elidable-new-object-roflcopter-then-exit.js:

2021-06-22  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unskip microbenchmarks/redefine-property-data-dictionary.js on MIPS/ARM
        https://bugs.webkit.org/show_bug.cgi?id=227252

        Unreviewed gardening.

        No failures on either platform after 100 iterations.

        * microbenchmarks/redefine-property-data-dictionary.js:

2021-06-22  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unskip stress/array-species-create-should-handle-masquerader.js on mips
        https://bugs.webkit.org/show_bug.cgi?id=227249

        Unreviewed gardening.

        No failure after 60 iterations.

        * stress/array-species-create-should-handle-masquerader.js:

2021-06-21  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Add JIT ICs for `#x in obj` feature
        https://bugs.webkit.org/show_bug.cgi?id=226146

        Reviewed by Saam Barati.

        * microbenchmarks/has-private-brand.js: Added.
        * microbenchmarks/has-private-name.js: Added.

2021-06-21  Xan Lopez  <xan@igalia.com>

        [JSC] Fix consistency check during stack splitting in Wasm::LLIntGenerator::addLoop
        https://bugs.webkit.org/show_bug.cgi?id=226012

        Reviewed by Tadeu Zagallo.

        * stress/wasm-loop-consistency.js: Added.
        (vm.isWasmSupported):

2021-06-21  Yusuke Suzuki  <ysuzuki@apple.com>

        Release assert memory in JSC::Wasm::Memory::growShared(JSC::Wasm::PageCount)::<lambda()>
        https://bugs.webkit.org/show_bug.cgi?id=227180

        Reviewed by Keith Miller.

        * stress/shared-wasm-memory-with-zero-byte.js: Added.

2021-06-21  Xan Lopez  <xan@igalia.com>

        [JSC] Reenable ChakraCore/test/Math/max.js on ARMv7 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=227209

        Reviewed by Adrian Perez de Castro.

        * ChakraCore.yaml: reenable the test, should be working fine now.

2021-06-20  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add ValueOf fast path in toPrimitive
        https://bugs.webkit.org/show_bug.cgi?id=226948

        Reviewed by Ross Kirsling.

        * microbenchmarks/valueof-via-toprimitive.js: Added.

2021-06-17  Saam Barati  <sbarati@apple.com>

        Make microbenchmarks/delete-property-from-prototype-chain not time out on debug builds
        https://bugs.webkit.org/show_bug.cgi?id=227148

        Reviewed by Mark Lam.

        * microbenchmarks/delete-property-from-prototype-chain.js:

2021-06-16  Tadeu Zagallo  <tzagallo@apple.com>

        AssemblyHelpers should save/restore callee save FPRs
        https://bugs.webkit.org/show_bug.cgi?id=227052
        <rdar://77080162>

        Reviewed by Mark Lam.

        * stress/callee-save-fpr.js: Added.
        (_f):
        (_g):
        (_h):
        (_i):
        (assertEqual):

2021-06-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize JSON.parse with small content by dropping single character Identifier pool
        https://bugs.webkit.org/show_bug.cgi?id=227057

        Reviewed by Sam Weinig.

        * microbenchmarks/flight-todomvc-json.js: Added.
        (test):

2021-06-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Workaround ICU uloc_addLikelySubtags / uloc_minimizeSubtags bugs
        https://bugs.webkit.org/show_bug.cgi?id=226996
        rdar://79250513

        Reviewed by Ross Kirsling.

        * stress/intl-long-locale-id-maximize-minimize.js: Added.
        (shouldBe):
        (throw.new.Error):

2021-06-13  Saam Barati  <sbarati@apple.com>

        https://bugs.webkit.org/show_bug.cgi?id=226576
        <rdar://problem/78810362>

        Reviewed by Yusuke Suzuki.

        * stress/short-circuit-read-modify-write-cant-write-dst-before-tdz-check.js: Added.
        (let.result.eval.try.captureV):
        (catch):

2021-06-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use ResolvedClosureVar to get brand from scope
        https://bugs.webkit.org/show_bug.cgi?id=226677
        rdar://78802869

        Reviewed by Saam Barati.

        * stress/private-access-nested-eval.js: Added.
        (shouldThrow):
        (shouldThrow.prototype.x):
        (shouldThrow.prototype.m.C.prototype.z):
        (shouldThrow.prototype.m.C.prototype.a):
        (shouldThrow.prototype.m.C):
        (shouldThrow.prototype.m):
        * stress/private-access-nested.js: Added.
        (shouldThrow):
        (shouldThrow.prototype.x):
        (shouldThrow.prototype.m.C.prototype.z):
        (shouldThrow.prototype.m.C.prototype.a):
        (shouldThrow.prototype.m.C):
        (shouldThrow.prototype.m):

2021-06-07  Alexey Shvayka  <shvaikalesh@gmail.com>

        Unreviewed, reland r276592 with a fix for put() override in prototype chain of a JSProxy
        https://bugs.webkit.org/show_bug.cgi?id=226185

        * microbenchmarks/put-slow-no-cache-array.js: Added.
        * microbenchmarks/put-slow-no-cache-function.js: Added.
        * microbenchmarks/put-slow-no-cache-js-proxy.js: Added.
        * microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Added.
        * microbenchmarks/put-slow-no-cache.js: Added.
        * microbenchmarks/reflect-set-with-receiver.js: Added.
        * stress/custom-get-set-proto-chain-put.js:
        * stress/module-namespace-access-set-fails.js: Added.
        * stress/put-non-reified-static-accessor-or-custom.js: Added.
        * stress/put-non-reified-static-function-or-custom.js: Added.
        * stress/put-to-primitive-non-reified-static-custom.js: Added.
        * stress/put-to-primitive.js: Added.
        * stress/put-to-proto-chain-overrides-put.js:
        Rework to always test new objects, add JSProxy coverage, and assert that receiver has own property.

        * stress/typed-array-canonical-numeric-index-string-set.js: Added.

2021-06-07  Saam Barati  <sbarati@apple.com>

        Short circuit read modify write nodes emit byte code that uses the wrong locals
        https://bugs.webkit.org/show_bug.cgi?id=226576
        <rdar://problem/78810362>

        Reviewed by Yusuke Suzuki.

        * stress/short-circuit-read-modify-should-use-the-write-virtual-registers.js: Added.
        (eval):

2021-06-07  Robin Morisset  <rmorisset@apple.com>

        Optimize compareStrictEq when neither side is a double and at least one is neither a string nor a BigInt
        https://bugs.webkit.org/show_bug.cgi?id=226676

        Reviewed by Filip Pizlo.

        I made two variants of the already existing poly-stricteq microbenchmarks with different types in the array.
        I also tweaked all three so that we more reliably reach the FTL.
        Finally I added a stress-test to verify that I did not introduce an OSR exit bug.

        * microbenchmarks/poly-stricteq-not-double-nor-string.js: Added.
        (foo):
        (test):
        * microbenchmarks/poly-stricteq-not-double.js: Added.
        (foo):
        (test):
        * microbenchmarks/poly-stricteq.js:
        (foo):
        (test):
        * stress/poly-stricteq-not-double-nor-string-fail.js: Added.
        (foo):
        (test):

2021-06-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Private static method should define privateClassBrandIdentifier in class-scope
        https://bugs.webkit.org/show_bug.cgi?id=226656
        rdar://78313139

        Reviewed by Keith Miller.

        * stress/private-in-error.js: Added.
        (shouldThrow):
        (x):
        (prototype.foo):
        * stress/private-static-method-declaration-error.js: Added.
        (shouldThrow):
        (prototype.get x):
        (prototype.foo.D.a):
        (prototype.foo.D.prototype.b):
        (prototype.foo.D):
        (prototype.foo):

2021-06-04  Mark Lam  <mark.lam@apple.com>

        Placate exception checker validation in objectPrototypeHasOwnProperty.
        https://bugs.webkit.org/show_bug.cgi?id=226651
        rdar://78861296

        Reviewed by Keith Miller.

        * stress/placate-exception-checker-in-objectPrototypeHasOwnProperty.js: Added.

2021-06-03  Filip Pizlo  <fpizlo@apple.com>

        DFG should speculate on CompareStrictEq(@x, @x)
        https://bugs.webkit.org/show_bug.cgi?id=226621

        Reviewed by Mark Lam.

        * microbenchmarks/untyped-stricteq-self.js: Added.
        (foo):
        * stress/untyped-stricteq-self-fail.js: Added.
        (bar):
        (foo):

2021-06-04  Keith Miller  <keith_miller@apple.com>

        Fix tests that fail under executable allocation fuzzing
        https://bugs.webkit.org/show_bug.cgi?id=226593

        Reviewed by Mark Lam.

        * microbenchmarks/memcpy-wasm-large.js:
        (typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        (typeof.WebAssembly.string_appeared_here.catch):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.
        * microbenchmarks/memcpy-wasm-medium.js:
        (typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        (typeof.WebAssembly.string_appeared_here.catch):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.
        * microbenchmarks/memcpy-wasm-small.js:
        (typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        (typeof.WebAssembly.string_appeared_here.catch):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.
        * microbenchmarks/memcpy-wasm.js:
        (typeof.WebAssembly.string_appeared_here.try.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        (typeof.WebAssembly.string_appeared_here.catch):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array): Deleted.
        * stress/bit-op-with-object-returning-int32.js:
        (numberOfDFGCompiles):
        (bitOr): Deleted.
        (bitXor): Deleted.
        (bitNot): Deleted.
        (bitLShift): Deleted.
        * stress/bitwise-not-fixup-rules.js:
        (numberOfDFGCompiles):
        (let.o.valueOf): Deleted.

2021-06-04  Tadeu Zagallo  <tzagallo@apple.com>

        Optimize Function.prototype.toString
        https://bugs.webkit.org/show_bug.cgi?id=226418
        <rdar://77861846>

        Reviewed by Saam Barati.

        * microbenchmarks/function-to-string.js: Added.
        (f):
        (C):
        (C.prototype.method1):
        (C.prototype.method2):
        (test):
        (test2):

2021-06-03  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Implement JIT ICs for InByVal
        https://bugs.webkit.org/show_bug.cgi?id=226563

        Reviewed by Saam Barati.

        * microbenchmarks/in-by-val-int32.js: Added.
        * microbenchmarks/in-by-val-string-index.js: Added.
        * microbenchmarks/in-by-val-symbol.js: Added.

2021-06-03  Mark Lam  <mark.lam@apple.com>

        Fix an ASSERT in objectPrototypeHasOwnProperty() to account for TerminationException.
        https://bugs.webkit.org/show_bug.cgi?id=226609
        rdar://78465046

        Reviewed by Robin Morisset.

        * stress/termination-exception-in-objectPrototypeHasOwnProperty.js: Added.

2021-06-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make $vm's accessor test functions robust against primitive |this|
        https://bugs.webkit.org/show_bug.cgi?id=226591

        Reviewed by Saam Barati.

        * stress/test-static-accessor-on-primitive.js: Added.
        (shouldThrow):

2021-05-28  Robin Morisset  <rmorisset@apple.com>

        Fix LikelyDenseUnsignedIntegerSet::clear()
        https://bugs.webkit.org/show_bug.cgi?id=226388
        rdar://78607433

        Reviewed by Mark Lam.

        * stress/stack-allocation-regression.js: Added.
        (foo):

2021-05-28  Saam Barati  <sbarati@apple.com>

        Don't sink arguments past the context of the inline call frame they were created in
        https://bugs.webkit.org/show_bug.cgi?id=226363
        <rdar://78392801>

        Reviewed by Filip Pizlo.

        * stress/dont-sink-arguments-past-inline-call-frame.js: Added.
        (foo):
        (fooWrap):
        (empty):
        (bar):

2021-05-22  Ross Kirsling  <ross.kirsling@sony.com>

        Support Ergonomic Brand Checks proposal (`#x in obj`)
        https://bugs.webkit.org/show_bug.cgi?id=221093

        Reviewed by Caio Araujo Neponoceno de Lima.

        * stress/private-in.js: Added.
        * test262/config.yaml: Add feature flag.

2021-05-21  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unskip type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value on MIPS
        https://bugs.webkit.org/show_bug.cgi?id=226011

        Unreviewed gardening.

        Appears to no longer be flaky.

        * stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js:

2021-05-20  Saam Barati  <sbarati@apple.com>

        [ Catalina Release JSC] A large number of JSC test appear to be flaky failing
        https://bugs.webkit.org/show_bug.cgi?id=225998
        <rdar://problem/78235001>

        Reviewed by Yusuke Suzuki.

        * stress/dont-link-virtual-calls-on-compiler-thread.js: Added.

2021-05-19  Robin Morisset  <rmorisset@apple.com>

        Fix typo in AirUseCounts
        https://bugs.webkit.org/show_bug.cgi?id=225977
        rdar://78210501

        Reviewed by Mark Lam.

        Add the testcase found by Tuomas.

        * stress/register-allocator-stress.js: Added.
        (foo):

2021-05-18  Keith Miller  <keith_miller@apple.com>

        Temporarily revert r276592 as it breaks some native apps
        https://bugs.webkit.org/show_bug.cgi?id=225917

        Unreviewed, revert.

        * microbenchmarks/put-slow-no-cache-array.js: Removed.
        * microbenchmarks/put-slow-no-cache-function.js: Removed.
        * microbenchmarks/put-slow-no-cache-js-proxy.js: Removed.
        * microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Removed.
        * microbenchmarks/put-slow-no-cache.js: Removed.
        * microbenchmarks/reflect-set-with-receiver.js: Removed.
        * stress/custom-get-set-proto-chain-put.js:
        (getObjects):
        (let.base.of.getBases):
        * stress/module-namespace-access-set-fails.js: Removed.
        * stress/put-non-reified-static-accessor-or-custom.js: Removed.
        * stress/put-non-reified-static-function-or-custom.js: Removed.
        * stress/put-to-primitive-non-reified-static-custom.js: Removed.
        * stress/put-to-primitive.js: Removed.
        * stress/put-to-proto-chain-overrides-put.js: Removed.
        * stress/typed-array-canonical-numeric-index-string-set.js: Removed.

2021-05-17  Alexey Shvayka  <shvaikalesh@gmail.com>

        REGRESSION (r271119): Object methods defined with shorthand notation cannot access "caller" in non-strict mode
        https://bugs.webkit.org/show_bug.cgi?id=225277

        Reviewed by Darin Adler.

        * stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Now covers #157461 and #157863. 
        * stress/function-caller-cross-realm-via-call-apply.js: Added, coverage for #34553.
        * stress/function-hidden-as-caller.js: Also adds test case for #102276.

2021-05-16  Saam Barati  <sbarati@apple.com>

        DFGVarargsForwardingPhase shouldn't consult Flush
        https://bugs.webkit.org/show_bug.cgi?id=225824

        Reviewed by Filip Pizlo and Yusuke Suzuki.

        * microbenchmarks/tail-call-forward-arguments-arguments-elimination.js: Added.

2021-05-15  Alexey Shvayka  <shvaikalesh@gmail.com>

        Turn callGetter() / callSetter() into instance methods
        https://bugs.webkit.org/show_bug.cgi?id=225831

        Reviewed by Ross Kirsling.

        * microbenchmarks/put-slow-no-cache-setter.js: Added.

2021-05-07  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Error#cause must recognize explicit undefined
        https://bugs.webkit.org/show_bug.cgi?id=225535

        Reviewed by Alexey Shvayka.

        * test262/config.yaml:
        Re-enable tests for this feature; they were all failing due to this quirk.

2021-05-07  Ross Kirsling  <ross.kirsling@sony.com>

        Update test262 (2021.05.07)
        https://bugs.webkit.org/show_bug.cgi?id=225536

        Reviewed by Alexey Shvayka.

        * test262/config.yaml:
        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/:
        * test262/test262-Revision.txt:

2021-05-06  Mark Lam  <mark.lam@apple.com>

        Forbid further execution in jsc shell if execution is terminated.
        https://bugs.webkit.org/show_bug.cgi?id=225410
        rdar://77548608

        Reviewed by Michael Saboff.

        * stress/jsc-shell-forbid-execution-after-termination.js: Added.

2021-05-05  Saam Barati  <sbarati@apple.com>

        Update tests to use collectExtraSamplingProfilerData instead of collectSamplingProfilerDataForJSCShell
        https://bugs.webkit.org/show_bug.cgi?id=225398

        Reviewed by Mark Lam.

        I forgot to update the tests to use the new option name.

        * stress/sampling-profiler-code-origin.js:
        * stress/sampling-profiler-richards.js:

2021-05-03  Mark Lam  <mark.lam@apple.com>

        Fix syntax error message for AUTOPLUSPLUS token.
        https://bugs.webkit.org/show_bug.cgi?id=225308
        rdar://76830934

        Reviewed by Saam Barati.

        * stress/prefix-plusplus-syntax-error-should-say-plusplus.js: Added.

2021-05-03  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-Function-References] Add call_ref instruction
        https://bugs.webkit.org/show_bug.cgi?id=222903

        Reviewed by Yusuke Suzuki.

        Add basic tests for new call_ref instruction:
        https://github.com/WebAssembly/function-references/blob/master/proposals/function-references/Overview.md.
        Add tests for calling same-instance wasm function, foreign-instance
        wasm function and for calling imported js function.

        * wasm.yaml:
        * wasm/function-references/call_ref.js: Added.
        (module):
        (async basics):
        (async indirectCall):
        (async importHostCall):
        * wasm/wasm.json:

2021-04-28  Mark Lam  <mark.lam@apple.com>

        Fix exception assertions in light of the TerminationException.
        https://bugs.webkit.org/show_bug.cgi?id=225128
        rdar://76694909

        Reviewed by Robin Morisset.

        * stress/suppress-TerminationException-in-JSFunction-prototypeForConstruction.js: Added.

2021-04-27  Angelos Oikonomopoulos  <angelos@igalia.com>

        [JSC] Skip tests failing on Loongson 3A4000
        https://bugs.webkit.org/show_bug.cgi?id=225091

        Reviewed by Yusuke Suzuki.

        This new hardware is much faster when it comes to running JSC tests (and
        hopefully more reliable than the ci20 boards currently in use), so skip the
        couple of tests that fail, so that we can test the Loongson box in production.

        * ChakraCore.yaml:
        * stress/arguments-properties-order.js:

2021-04-26  Mark Lam  <mark.lam@apple.com>

        %TypedArray%.prototype.sort() should not use a regular array as a temp buffer.
        https://bugs.webkit.org/show_bug.cgi?id=225062
        rdar://77021547

        Reviewed by Yusuke Suzuki.

        * stress/typedarray-sort-should-not-use-a-regular-array-as-temp-buffer.js: Added.

2021-04-26  Alexey Shvayka  <shvaikalesh@gmail.com>

        [JSC] OrdinarySet should invoke custom [[Set]] methods
        https://bugs.webkit.org/show_bug.cgi?id=217916

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/put-slow-no-cache-array.js: Added.
        * microbenchmarks/put-slow-no-cache-function.js: Added.
        * microbenchmarks/put-slow-no-cache-js-proxy.js: Added.
        * microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Added.
        * microbenchmarks/put-slow-no-cache.js: Added.
        * microbenchmarks/reflect-set-with-receiver.js: Added.
        * stress/custom-get-set-proto-chain-put.js:
        * stress/module-namespace-access-set-fails.js: Added.
        * stress/put-non-reified-static-accessor-or-custom.js: Added.
        * stress/put-non-reified-static-function-or-custom.js: Added.
        * stress/put-to-primitive-non-reified-static-custom.js: Added.
        * stress/put-to-primitive.js: Added.
        * stress/put-to-proto-chain-overrides-put.js: Added.
        * stress/typed-array-canonical-numeric-index-string-set.js: Added.

2021-04-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Baseline should have fast path for switch_imm
        https://bugs.webkit.org/show_bug.cgi?id=224521

        Reviewed by Tadeu Zagallo.

        * stress/switch-imm-baseline.js: Added.
        (shouldBe):
        (test):

2021-04-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG / FTL should inline switch_string
        https://bugs.webkit.org/show_bug.cgi?id=224578

        Reviewed by Mark Lam.

        * microbenchmarks/switch-inlining.js: Added.
        (inner):
        (outer):
        * stress/switch-inlining-nested.js: Added.
        (shouldBe):
        (inner):
        (outer):

2021-04-21  Caio Lima  <ticaiolima@gmail.com>

        [JSC] Unskip some tests for ARMv7 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=224813

        Unreviewed test gardening.

        * stress/has-own-property-name-cache-symbols-and-strings.js:
        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:

2021-04-20  Paulo Matos  <pmatos@igalia.com>

        Unskip couple of tests for armv7l and mips
        https://bugs.webkit.org/show_bug.cgi?id=224607

        Unreviewed gardening.

        * stress/check-stack-overflow-before-value-profiling-arguments.js:
        (fullGC):
        * stress/intl-suppored-locales-of.js:

2021-04-20  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Limit memory allocation size of JSTests/stress/early-return-from-builtin.js
        https://bugs.webkit.org/show_bug.cgi?id=224803
        <rdar://problem/75597901>

        Reviewed by Ryosuke Niwa.

        Add limit to JSTests/stress/early-return-from-builtin.js to avoid infinite allocation.

        * stress/early-return-from-builtin.js:
        (let.iter.Symbol.iterator):

2021-04-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Rebaseline test results for new ICU
        https://bugs.webkit.org/show_bug.cgi?id=224792

        Reviewed by Mark Lam.

        This patch updates some intl- tests' expectation since it is changed because of ICU CLDR data change.

        * stress/intl-datetimeformat-formatrange-relevant-extensions-ja.js:
        (shouldBeOneOfThem):
        (vm.icuVersion):
        * stress/intl-datetimeformat-formatrange-relevant-extensions.js:
        (shouldBeOneOfThem):
        * stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js:
        (shouldBe):
        (vm.icuHeaderVersion):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js:
        (normalize):
        (shouldBe):
        (compareParts):
        (shouldBeOneOfParts):
        (shouldBeParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt5.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.vm.icuVersion):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt7.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt9.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt11.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt13.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeParts.fmt13.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt14.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt15.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.shouldBeOneOfParts.fmt16.formatRangeToParts):
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt1.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt2.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt3.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt4.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt5.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt6.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt7.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt8.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt9.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt10.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt11.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt12.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt13.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt14.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt15.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.prototype.formatRangeToParts.compareParts.fmt16.formatRangeToParts): Deleted.
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js:
        (normalize):
        (shouldBe):
        (compareParts):
        (shouldBeOneOfParts):
        (shouldBeParts):
        * stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js:
        (shouldBe):
        * stress/intl-datetimeformat.js:
        (shouldBeOneOfThem):

2021-04-16  Guillaume Emont  <guijemont@igalia.com>

        [JSC] Unskip stress/intl-parse-unicode-subtags.js on arm
        https://bugs.webkit.org/show_bug.cgi?id=224679

        Unreviewed test gardening.

        * stress/intl-parse-unicode-subtags.js: Unskipped, as it passes fine
        now.

2021-04-16  Xan Lopez  <xan@igalia.com>

        [JSC][ARMv7] Unskip stress/put-direct-index-broken-2.js
        https://bugs.webkit.org/show_bug.cgi?id=224661

        Unreviewed test gardening.

        * stress/put-direct-index-broken-2.js: unskip on ARMv7, could not
        reproduce locally the crash we saw earlier.

2021-04-15  Mark Lam  <mark.lam@apple.com>

        HashMapImpl::rehash() should use a version of jsMapHash that cannot throw.
        https://bugs.webkit.org/show_bug.cgi?id=224610
        rdar://76698910

        Reviewed by Yusuke Suzuki.

        * stress/suppress-TerminationException-in-HashMapImpl-rehash.js: Added.

2021-04-14  Mark Lam  <mark.lam@apple.com>

        Add missing exception check in operationGetPrivateNameOptimize().
        https://bugs.webkit.org/show_bug.cgi?id=224592
        rdar://76645873

        Reviewed by Yusuke Suzuki.

        * stress/suppress-TerminationException-in-operationGetPrivateNameOptimize.js: Added.

2021-04-14  Mark Lam  <mark.lam@apple.com>

        Defer TerminationExceptions when evaluating ASSERT in HashMapIml::addNormalized().
        https://bugs.webkit.org/show_bug.cgi?id=224565
        rdar://76645980

        Reviewed by Yusuke Suzuki.

        * stress/suppress-TerrminationException-in-ASSERT-in-HashMapImpl-addNormalized.js: Added.

2021-04-14  Guillaume Emont  <guijemont@igalia.com>

        [JSC] Unskip stress/intl-segmenter.js
        https://bugs.webkit.org/show_bug.cgi?id=224553

        Unreviewed test gardening.

        It shouldn't fail any more on our bots now that our handling of libicu
        is more robust.

        * stress/intl-segmenter.js:

2021-04-14  Angelos Oikonomopoulos  <angelos@igalia.com>

        [JSC] Unskip typedarray-functions-with-neutered.js on MIPS
        https://bugs.webkit.org/show_bug.cgi?id=224428

        Unreviewed test gardening.

        This appears to no longer fail.

        * stress/typedarray-functions-with-neutered.js:

2021-04-13  Angelos Oikonomopoulos  <angelos@igalia.com>

        [JSC] Unskip stress/intl-displaynames.js on ARM
        https://bugs.webkit.org/show_bug.cgi?id=224427

        Unreviewed test gardening.

        * stress/intl-displaynames.js:

2021-04-10  Mark Lam  <mark.lam@apple.com>

        Enable VMTraps checks in RETURN_IF_EXCEPTION.
        https://bugs.webkit.org/show_bug.cgi?id=224078
        rdar://75037057

        Reviewed by Keith Miller.

        * stress/watchdog-fire-while-in-forEachInIterable.js: Added.

2021-04-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DUCET level-1 weighs are equal if characters are alphabets
        https://bugs.webkit.org/show_bug.cgi?id=224047

        Reviewed by Saam Barati and Mark Lam.

        * stress/ducet-level-3-or-4-comparison.js: Added.
        (shouldBe):

2021-04-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update test262
        https://bugs.webkit.org/show_bug.cgi?id=224272

        Reviewed by Ross Kirsling.

        * test262/latest-changes-summary.txt:
        * test262/test/intl402/DisplayNames/options-getoptionsobject.js: Added.
        * test262/test/intl402/ListFormat/constructor/constructor/options-getoptionsobject.js: Renamed from JSTests/test262/test/intl402/ListFormat/constructor/constructor/options-toobject.js.
        * test262/test/intl402/ListFormat/constructor/constructor/options-toobject-prototype.js: Removed.
        * test262/test/intl402/Segmenter/constructor/constructor/options-getoptionsobject.js: Added.
        * test262/test/intl402/Segmenter/constructor/constructor/options-toobject-prototype.js: Removed.
        * test262/test/intl402/Segmenter/constructor/constructor/options-toobject.js: Removed.
        * test262/test/language/expressions/in/rhs-yield-absent-non-strict.js: Added.
        * test262/test/language/expressions/in/rhs-yield-absent-strict.js: Added.
        * test262/test/language/expressions/in/rhs-yield-present.js: Added.
        (isNameIn):
        * test262/test262-Revision.txt:

2021-04-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] WasmMemory caging should care about nullptr
        https://bugs.webkit.org/show_bug.cgi?id=224268
        <rdar://problem/74654838>

        Reviewed by Mark Lam.

        * wasm/stress/4g-memory-cage.js: Added.
        (async test):
        * wasm/stress/more-than-4g-offset-access-oom.js: Added.
        (async test):
        * wasm/stress/null-memory-cage-explicit.js: Added.
        (async test):
        * wasm/stress/null-memory-cage.js: Added.
        (async test):

2021-04-06  Alexey Shvayka  <shvaikalesh@gmail.com>

        Symbol and BigInt wrapper objects should perform OrdinaryToPrimitive
        https://bugs.webkit.org/show_bug.cgi?id=224208

        Reviewed by Yusuke Suzuki.

        * stress/bigint-object-ordinary-toprimitive.js: Added.
        * stress/symbol-object-ordinary-toprimitive.js: Added.

2021-04-06  Alexey Shvayka  <shvaikalesh@gmail.com>

        Array's toString() is incorrect if join() is non-callable
        https://bugs.webkit.org/show_bug.cgi?id=224215

        Reviewed by Yusuke Suzuki.

        * stress/array-toString-non-callable-join.js: Added.

2021-04-05  Keith Miller  <keith_miller@apple.com>

        DFG arity fixup nodes should exit to the caller's call opcode
        https://bugs.webkit.org/show_bug.cgi?id=223278

        Reviewed by Saam Barati.

        * stress/dfg-arity-fixup-uses-callers-exit-origin.js: Added.
        (main.v22):
        (main.v30):
        (main.try.v40):
        (main.try.v47):
        (main.try.v56):
        (main.):
        (main):

2021-04-02  Alexey Shvayka  <shvaikalesh@gmail.com>

        Reduce bytecode instruction count emitted for `class extends`
        https://bugs.webkit.org/show_bug.cgi?id=223884

        Reviewed by Yusuke Suzuki.

        * ChakraCore/test/Error/validate_line_column.baseline-jsc:

2021-04-02  Jessica Tallon  <jtallon@igalia.com>

        Add tests for the new type method on certain JS-API wasm objects.
        https://bugs.webkit.org/show_bug.cgi?id=222412

        Reviewed by Yusuke Suzuki.

        * wasm/js-api/global.js: Added.
        (assert.throws):
        * wasm/js-api/table.js:
        (assert.truthy):
        * wasm/js-api/test_memory.js:

2021-04-01  Alexey Shvayka  <shvaikalesh@gmail.com>

        Optimize createListFromArrayLike() and Proxy's [[OwnPropertyKeys]] method
        https://bugs.webkit.org/show_bug.cgi?id=223928

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/json-stringify-array-replacer.js:
        Reduce running time from over 350ms to ~60ms.

        * microbenchmarks/reflect-own-keys-proxy-2.js: Added.
        * microbenchmarks/reflect-own-keys-proxy.js: Added.

2021-03-31  Mark Lam  <mark.lam@apple.com>

        Missing exception check in HashMapImpl::add().
        https://bugs.webkit.org/show_bug.cgi?id=224007
        rdar://76053163

        Reviewed by Saam Barati.

        * stress/missing-exception-check-in-HashMapImpl-add.js: Added.

2021-03-31  Alexey Shvayka  <shvaikalesh@gmail.com>

        Optimize constructors of ES6 collections
        https://bugs.webkit.org/show_bug.cgi?id=223953

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/map-constructor.js:
        * microbenchmarks/set-constructor.js: Added.
        * microbenchmarks/weak-map-constructor.js: Added.
        * microbenchmarks/weak-set-constructor.js: Added.
        * stress/map-constructor-adder.js:
        * stress/set-constructor-adder.js:
        * stress/weak-map-constructor-adder-error-cross-realm.js: Added.
        * stress/weak-map-constructor-adder.js:
        * stress/weak-set-constructor-adder-error-cross-realm.js: Added.
        * stress/weak-set-constructor-adder.js:
        * stress/weak-set-constructor.js:

2021-03-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed test gardening.

        * stress/early-return-from-builtin.js: Disable this test for memoryLimited configurations.

2021-03-26  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use AppleICU SPI for canonicalization
        https://bugs.webkit.org/show_bug.cgi?id=223552

        Reviewed by Ryosuke Niwa.

        * stress/intl-canonical-locale-alias-mapping.js: Added.
        (shouldBe):
        (Intl.getCanonicalLocales):

2021-03-25  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r275056.

        This is no longer needed

        Reverted changeset:

        "stress/early-return-from-builtin.js.default is failing on iOS
        JSC testers"
        https://commits.webkit.org/r275056

2021-03-25  Truitt Savell  <tsavell@apple.com>

        stress/early-return-from-builtin.js.default is failing on iOS JSC testers
        rdar://75597901

        Unreviewed test gardening.

        * stress/early-return-from-builtin.js:

2021-03-25  Saam Barati  <sbarati@apple.com>

        early-return-from-builtin.js should try/catch in case of OOM
        https://bugs.webkit.org/show_bug.cgi?id=223756

        Reviewed by Yusuke Suzuki.

        It's throwing an OOM on iOS.

        * stress/early-return-from-builtin.js:

2021-03-24  Michael Saboff  <msaboff@apple.com>

        [YARR] Interpreter incorrectly matches non-BMP characters with multiple . w/dotAll flag
        https://bugs.webkit.org/show_bug.cgi?id=223666

        Reviewed by Mark Lam.

        Added tests for dotAll.  Also made sure that we test both JIT and non-JIT execution.

        * stress/regexp-dot-match-nonBMP.js:

2021-03-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Rope string equal operation should first check length
        https://bugs.webkit.org/show_bug.cgi?id=223678

        Reviewed by Mark Lam.

        * stress/redefine-property-same-value-exception-check.js:
        (shouldThrow):

2021-03-23  Robin Morisset  <rmorisset@apple.com>

        Object.freeze(this) at the global scope can lose a reference to a WatchpointSet
        https://bugs.webkit.org/show_bug.cgi?id=223608

        Reviewed by Yusuke Suzuki.

        * stress/freeze-global-object.js: Added.
        (foo):

2021-03-22  Saam Barati  <sbarati@apple.com>

        LiteralParser shouldn't make error messages of length ~2^31
        https://bugs.webkit.org/show_bug.cgi?id=223483
        <rdar://75572255>

        Reviewed by Robin Morisset.

        * stress/literal-parser-error-message-oom.js: Added.

2021-03-22  Michael Saboff  <msaboff@apple.com>

        [YARR] Interpreter incorrectly matches non-BMP characters with multiple .
        https://bugs.webkit.org/show_bug.cgi?id=223498

        Reviewed by Yusuke Suzuki.

        New test.

        * stress/regexp-dot-match-nonBMP.js: Added.
        (shouldMatch):
        (shouldntMatch):

2021-03-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Intl.Locale should not assume is8Bit
        https://bugs.webkit.org/show_bug.cgi?id=223553

        Reviewed by Ross Kirsling.

        * stress/intl-locale-non-8bit.js: Added.
        (shouldBe):

2021-03-19  Mark Lam  <mark.lam@apple.com>

        BrandedStructure should keep its members alive.
        https://bugs.webkit.org/show_bug.cgi?id=223495
        rdar://75565765

        Reviewed by Saam Barati.

        * stress/BrandedStructure-should-keep-its-members-alive.js: Added.

== Rolled over to ChangeLog-2021-03-18 ==
