2022-01-14  Mark Lam  <mark.lam@apple.com>

        JSStringJoiner's constructor should take a size_t length.
        https://bugs.webkit.org/show_bug.cgi?id=235217
        rdar://87538657

        Reviewed by Yusuke Suzuki.

        * stress/max-typed-array-length-toString.js: Added.

2022-01-14  Alexey Shvayka  <ashvayka@apple.com>

        JSArray::fastSlice() should not convert the source from CoW
        https://bugs.webkit.org/show_bug.cgi?id=234990

        Reviewed by Yusuke Suzuki.

        * stress/array-slice-cow.js:

2022-01-14  Justin Michaud  <justin_michaud@apple.com>

        Update libWABT
        https://bugs.webkit.org/show_bug.cgi?id=235050

        Update libWabt to support new simd instructions, and add stubs so that the 
        wasm test runner can run in v8.

        Reviewed by Yusuke Suzuki.

        * wasm/assert.js:
        * wasm/libwabt.js:
        (WabtModule):
        (set get if):

2022-01-11  Asumu Takikawa  <asumu@igalia.com>

        [Wasm] Unify memory import handling in module loader and JS cases
        https://bugs.webkit.org/show_bug.cgi?id=234116

        Reviewed by Yusuke Suzuki.

        Add an instantiation test case that tests that instantiating the same
        binary module twice will not crash.

        * wasm/js-api/web-assembly-instantiate.js:
        (assert.asyncTest.async test):
        (assert.asyncTest):

2022-01-10  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, add a bit more Intl.Locale hourCycle tests to investigate flakiness

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

2022-01-07  Alexey Shvayka  <ashvayka@apple.com>

        Expand the set of objects we take JSArray::fastSlice() path for
        https://bugs.webkit.org/show_bug.cgi?id=234539

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/array-slice-call-cloned-arguments.js: Added.
        * stress/array-slice-beyond-length.js: Added.
        * stress/array-slice-length-lookup.js: Added.

2022-01-06  Saam Barati  <sbarati@apple.com>

        preparePatchpointForExceptions needs to handle tuples
        https://bugs.webkit.org/show_bug.cgi?id=234909

        Reviewed by Yusuke Suzuki.

        Add support to the builder to have functions return tuples.

        * wasm/Builder.js:
        (const._normalizeFunctionSignature):
        (const._maybeRegisterType):
        * wasm/Builder_WebAssemblyBinary.js:
        (const.emitters.Type):
        * wasm/stress/exception-throw-from-function-returning-tuple.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.testCatchWithExceptionThrownFromFunctionReturningTuple):

2022-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

        Array.prototype.toLocaleString does not respect deletion of Object.prototype.toLocaleString
        https://bugs.webkit.org/show_bug.cgi?id=232723

        Reviewed by Alexey Shvayka.

        * ChakraCore/test/Array/toLocaleString.baseline-jsc:
        * stress/array-tolocalestring-delete-tolocalestring.js: Added.
        (shouldThrow):
        * stress/array-tolocalestring-empty-separator.js: Added.
        (shouldBe):
        * stress/array-tolocalestring-options.js: Added.
        (shouldBe):
        * stress/array-tolocalestring-undefined-null.js: Added.
        (shouldBe):
        (shouldBe.toLocaleString):

2022-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Fix Intl.PluralRules.selectRange input validation
        https://bugs.webkit.org/show_bug.cgi?id=234817

        Reviewed by Alexey Shvayka.

        * stress/intl-pluralrules-select-range-validate-inputs.js: Added.
        (shouldThrow):
        (Intl.PluralRules.prototype.selectRange.shouldThrow):

2022-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update UCD to Unicode 14.0.0
        https://bugs.webkit.org/show_bug.cgi?id=234811

        Reviewed by Sam Weinig.

        * test262/expectations.yaml:

2022-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Read-modify-write operation's second put-to-scope should not throw error if binding does not exist
        https://bugs.webkit.org/show_bug.cgi?id=234813

        Reviewed by Alexey Shvayka.

        * stress/global-object-read-modify-write-remove-at-get-strict.js: Added.
        (shouldThrow):
        * stress/global-object-read-modify-write-remove-at-get.js: Added.
        (shouldBe):
        * test262/expectations.yaml:

2022-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Fix length of Intl.NumberFormat.formatRange and Intl.PluralRules.selectRange
        https://bugs.webkit.org/show_bug.cgi?id=234806

        Reviewed by Alexey Shvayka.

        * stress/intl-numberformat-format-range-v3.js:
        (nf.formatRange.nf.formatRangeToParts.methods.forEach):
        * stress/intl-pluralrules-selectrange.js:

2022-01-03  Yusuke Suzuki  <ysuzuki@apple.com>

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

        Reviewed by Alexey Shvayka.

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

2022-01-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use emitPutProperty / emitGetPropertyValue consistently to handle private names in edge cases
        https://bugs.webkit.org/show_bug.cgi?id=234794

        Reviewed by Alexey Shvayka.

        * test262/expectations.yaml:

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

        LLInt should loop OSR into BBQ and BBQ should loop OSR into OMG
        https://bugs.webkit.org/show_bug.cgi?id=234542

        Reviewed by Yusuke Suzuki.

        * wasm/wast-tests/harness.js:

2021-12-19  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] OpPow should have a "small int exponent" fast path at lower tiers
        https://bugs.webkit.org/show_bug.cgi?id=234408

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/pow-double-int.js: Added.
        * microbenchmarks/pow-int-int.js: Added.

2021-12-16  Devin Rousso  <drousso@apple.com>

        Implement Array.prototype.groupBy and Array.prototype.groupByToMap
        https://bugs.webkit.org/show_bug.cgi?id=234327

        Reviewed by Yusuke Suzuki.

        * stress/array-groupBy.js: Added.
        (shouldBe):
        (shouldBeObject):
        (shouldBeObject.replacer):
        (notReached):
        (toObject):
        (reverseInsertionOrder):
        * stress/array-groupByToMap.js: Added.
        (shouldBe):
        (shouldBeObject):
        (shouldBeObject.replacer):
        (shouldBeMap):
        (notReached):
        (toObject):
        (reverseInsertionOrder):

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

        [Shadow Realms] Wrapped functions must only throw TypeError from calling realm
        https://bugs.webkit.org/show_bug.cgi?id=234357

        Test the cases when the exception would be thrown by a function
        originating from both the shadow realm and the incubating realm.

        Reviewed by Yusuke Suzuki.

        * stress/shadow-realm-evaluate.js:
        (shouldBe):
        (let.f.realm.evaluate):
        (shouldBe.f):

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

        [JSC] Update Intl tests based on ICU 69~
        https://bugs.webkit.org/show_bug.cgi?id=234276

        Reviewed by Mark Lam.

        Rebaseline Intl tests based on ICU 69~'s CLDR update.

        * stress/array-toLocaleString.js:
        * stress/date-toLocaleString.js:
        * stress/intl-canonical-locale-alias-mapping.js:
        (Intl.getCanonicalLocales):
        * stress/intl-datetimeformat-formatrange-relevant-extensions-ja.js:
        (vm.icuVersion):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js:
        * stress/intl-datetimeformat.js:
        * stress/intl-enumeration.js:
        * stress/intl-locale-info.js:
        (shouldBe):
        * stress/intl-locale.js:

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

        Unreviewed, we may not throw an stack overflow error

        * stress/stack-overflow-in-custom-hasInstance.js:
        (catch):

2021-12-08  Asumu Takikawa  <asumu@igalia.com>

        Support WebAssembly.Memory imports in Wasm/ESM modules.
        https://bugs.webkit.org/show_bug.cgi?id=184745

        Reviewed by Yusuke Suzuki.

        * wasm/modules/wasm-imports-js-exports.js:
        (then):
        * wasm/modules/wasm-imports-js-exports/memory-fail-1.js: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-1.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-1.wat: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-2.js: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-2.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-2.wat: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-3.js: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-3.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-3.wat: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-4.js: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-4.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-4.wat: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-5.js: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-5.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/memory-fail-5.wat: Added.
        * wasm/modules/wasm-imports-js-exports/memory.js: Added.
        (export.setMemory):
        * wasm/modules/wasm-imports-js-exports/memory.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/memory.wat: Added.
        * wasm/modules/wasm-imports-js-exports/shared-memory.js: Added.
        * wasm/modules/wasm-imports-js-exports/shared-memory.wasm: Added.
        * wasm/modules/wasm-imports-js-exports/shared-memory.wat: Added.
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports.js:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wasm:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wat:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/re-export.js:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wasm:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wat:

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

        TypedArray prototype set should go down the fast path when using non clamped integer types of the same byte size
        https://bugs.webkit.org/show_bug.cgi?id=233905

        Reviewed by Keith Miller.

        * microbenchmarks/typed-array-prototype-set.js: Added.
        * microbenchmarks/typed-array-prototype-set-order.js: Added.
        * stress/typed-array-prototype-set.js: Added.

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

        [JSC] shell's $.globalObjectFor is not safe for non object cells
        https://bugs.webkit.org/show_bug.cgi?id=233794

        Reviewed by Saam Barati.

        * stress/dollar-global-object.js: Added.

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

        Fix OOM crash in JSValue::toWTFStringForConsole
        https://bugs.webkit.org/show_bug.cgi?id=233775
        <rdar://85259423>

        Reviewed by Mark Lam.

        * stress/pretty-print-oom.js: Added.

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

        GetMyArgumentByValOutOfBounds needs to check for negative indices
        https://bugs.webkit.org/show_bug.cgi?id=232966
        <rdar://problem/85519898>

        Reviewed by Yusuke Suzuki.

        * get-my-argument-by-val-negative-1.js: Added.
        * get-my-argument-by-val-negative-2.js: Added.
        * get-my-argument-by-val-negative-3.js: Added.

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

        [JSC] jumpForTypedArrayOutOfBounds should use asAnyInt since it uses isAnyInt
        https://bugs.webkit.org/show_bug.cgi?id=233610
        rdar://85820476

        Reviewed by Saam Barati.

        * stress/anyint-index.js: Added.
        (foo):

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

        FTL's implementation of HasIndexedProperty for InBounds accesses checks the inverse of what it should be checking when exiting by seeing a hole
        https://bugs.webkit.org/show_bug.cgi?id=233408
        <rdar://problem/85787251>

        Reviewed by Mark Lam.

        * stress/in-by-val-has-indexed-property-ftl-3.js: Added.
        * stress/in-by-val-has-indexed-property-ftl-2.js: Added.
        * stress/in-by-val-has-indexed-property-ftl.js: Added.

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

        [JSC] slice should be aware of TerminationException
        https://bugs.webkit.org/show_bug.cgi?id=233593
        rdar://85823844

        Reviewed by Mark Lam.

        * stress/slice-termination-exception.js: Added.
        (async infiniteLoop):

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

        [JSC] Add Intl.NumberFormat.formatRangeToParts
        https://bugs.webkit.org/show_bug.cgi?id=233539

        Reviewed by Ross Kirsling.

        * stress/intl-numberformat-format-large.js:
        (nf.formatRangeToParts.shouldBe.JSON.stringify.nf.formatRangeToParts):
        (nf.formatRangeToParts.shouldBe.JSON.stringify.nf2.formatRangeToParts):
        * stress/intl-numberformat-format-range-v3.js:
        (nf.formatRange.nf.formatRangeToParts.methods.forEach):
        (nf.formatRange.string_appeared_here.forEach): Deleted.
        * stress/intl-numberformat-format-string-v3.js:
        (nf.formatRangeToParts.shouldBe.JSON.stringify.nf.formatRangeToParts):
        (nf.formatRangeToParts.shouldBe.JSON.stringify.nf2.formatRangeToParts):
        * stress/intl-numberformat-format-string.js:
        (nf.formatRangeToParts.shouldBe.JSON.stringify.nf.formatRangeToParts):
        (nf.formatRangeToParts.shouldBe.JSON.stringify.nf2.formatRangeToParts):

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

        [JSC] Public Class Field initialization is slow
        https://bugs.webkit.org/show_bug.cgi?id=232479

        Reviewed by Alexey Shvayka.

        * microbenchmarks/class-fields-classic-constructor-assignments.js: Added.
        (Classic_Constructor_Assignments):
        (bench):
        * microbenchmarks/class-fields-private-fields.js: Added.
        (ES2022_Private_Fields):
        (bench):
        * microbenchmarks/class-fields-public-fields.js: Added.
        (ES2022_Public_Fields):
        (bench):
        * stress/class-fields-getter-override.js: Added.
        (shouldThrow):
        (defineCGetter.):
        (B):
        (define0Getter.):
        (define0Getter):
        (D):
        * stress/custom-get-set-proto-chain-put.js:
        (let.object.of.getObjects):
        * stress/freeze-and-seal-should-prevent-extensions.js:
        * stress/object-assign-fast-path.js:
        * stress/ordinary-set-exceptions.js:
        (shouldThrow):
        * stress/put-non-reified-static-function-or-custom.js:
        * wasm/js-api/test_basic_api.js:
        (const.c.in.constructorProperties.switch):

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

        [JSC] private name operation should use RETURN_IF_EXCEPTION
        https://bugs.webkit.org/show_bug.cgi?id=233577
        rdar://85813869

        Reviewed by Mark Lam.

        * stress/termination-error-in-private-name.js: Added.
        (C):

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

        [JSC] GetTypedArrayLengthAsInt52 can get Array::Generic ArrayMode
        https://bugs.webkit.org/show_bug.cgi?id=233571
        rdar://85812164

        Reviewed by Mark Lam.

        * stress/get-typed-array-length-as-int52-generic.js: Added.
        (foo.bar):
        (foo):

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 ==
