2020-08-07  Michael Saboff  <msaboff@apple.com>

        RegExp sticky not matching alternates correctly, ignoring lastIndex requirement
        https://bugs.webkit.org/show_bug.cgi?id=214181

        Reviewed by Yusuke Suzuki.

        New test.

        * stress/regexp-sticky-tests.js: Added.
        (assert):

2020-08-07  Paulo Matos  <pmatos@igalia.com>

        Skip test on ARM32 - test is flaky in mini-mode

        Unreviewed Gardening.

        * stress/put-direct-index-broken-2.js:

2020-08-05  Saam Barati  <sbarati@apple.com>

        Fix returnEarlyFromInfiniteLoopsForFuzzing in DFG and validateDoesGC
        https://bugs.webkit.org/show_bug.cgi?id=215194
        <rdar://problem/66158641>

        Reviewed by Mark Lam.

        * stress/validate-does-gc-with-return-early-from-infinite-loop-2.js: Added.
        (vm.useJIT):

2020-08-05  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, skip private field test

        Private field has a bug and this test is failing. We skip it since private field is not enabled.

        * stress/put-by-val-direct-putprivate.js:

2020-08-04  Keith Miller  <keith_miller@apple.com>

        CheckpointSideState shoud play nicely with StackOverflowException unwinding.
        https://bugs.webkit.org/show_bug.cgi?id=215114

        Reviewed by Saam Barati.

        * stress/stack-overflow-into-frame-with-pending-checkpoint.js: Added.
        (foo.catch.async bar):
        (foo.catch):
        (foo):

2020-08-03  Caio Lima  <ticaiolima@gmail.com>

        [JSC][MIPS] Test gardening July 31st edition
        https://bugs.webkit.org/show_bug.cgi?id=215023

        Unreviewed Gardening.

        * stress/typedarray-access-neutered.js:

2020-07-30  Saam Barati  <sbarati@apple.com>

        Skip stress/operand-should-fit-in-abstract-heap-encoded-payload-format.js
        https://bugs.webkit.org/show_bug.cgi?id=215001

        Reviewed by Darin Adler.

        The test takes > 4 minutes when run on an idle machine. That's too long.

        * stress/operand-should-fit-in-abstract-heap-encoded-payload-format.js:

2020-07-30  Caio Lima  <ticaiolima@gmail.com>

        [JSC][32-bits] interator_next should check for EmptyValue instead of undefined to execute LLInt fast path
        https://bugs.webkit.org/show_bug.cgi?id=214963

        Reviewed by Yusuke Suzuki.

        * stress/invalidate-array-iterator-prototype-next.js: Added.

2020-07-30  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, fix bottom-tuple.js test
        https://bugs.webkit.org/show_bug.cgi?id=214956

        Only thing we would like to check in this test is whether this does not crash.

        * wasm/stress/bottom-tuple.js:
        (catch): Deleted.

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

        Unreviewed, use requireOptions
        https://bugs.webkit.org/show_bug.cgi?id=214956

        * wasm/stress/bottom-tuple.js:

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

        [JSC] Add B3::BottomTupleValue node
        https://bugs.webkit.org/show_bug.cgi?id=214956
        <rdar://problem/65192877>

        Reviewed by Keith Miller.

        * wasm/stress/bottom-tuple.js: Added.
        (try.main):
        (catch):

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

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

        Reviewed by Ross Kirsling.

        related-year-zh.js tests are updated and passing.

        * test262/config.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/intl402/DateTimeFormat/prototype/format/related-year-zh.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatToParts/related-year-zh.js:
        (actual.forEach):
        (verifyFormatParts): Deleted.
        (verifyFormatParts.df.formatToParts): Deleted.
        * test262/test/intl402/Segmenter/prototype/segment/segment-grapheme-iterable.js:
        (const.v.of.seg.segment):
        * test262/test/intl402/Segmenter/prototype/segment/segment-grapheme.js: Removed.
        * test262/test/intl402/Segmenter/prototype/segment/segment-sentence-iterable.js:
        (const.v.of.seg.segment):
        * test262/test/intl402/Segmenter/prototype/segment/segment-sentence.js: Removed.
        * test262/test/intl402/Segmenter/prototype/segment/segment-tostring.js:
        * test262/test/intl402/Segmenter/prototype/segment/segment-word-iterable.js:
        (const.v.of.seg.segment):
        * test262/test/intl402/Segmenter/prototype/segment/segment-word.js: Removed.
        * test262/test262-Revision.txt:

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

        [JSC] Skip too heavy tests for Debug build
        https://bugs.webkit.org/show_bug.cgi?id=214939

        Reviewed by Mark Lam.

        They are taking too much time in Debug build and cause timeout. We should skip them.

        * ChakraCore.yaml:
        * stress/codeblock-destructor-access-unlinkedcodeblock.js:
        * stress/dfg-to-string-on-string-object-does-not-gc.js:
        * stress/rest-parameter-many-arguments.js:

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

        WebAssembly validation for call_indirect is incorrect
        https://bugs.webkit.org/show_bug.cgi?id=214901
        <rdar://problem/65189677>

        Reviewed by Saam Barati.

        * wasm/stress/validate-call_indirect.js: Added.
        (try.main):
        (catch):

2020-07-29  Paulo Matos  <pmatos@igalia.com>

        for..of intrinsics implementation for 32bits
        https://bugs.webkit.org/show_bug.cgi?id=214737

        Reviewed by Yusuke Suzuki.

        Joint work with Caio Lima <ticaiolima@gmail.com>.
        Unskip tests previously skipped due to missing for..of intrinsics.

        * stress/for-of-array-different-globals.js:
        * stress/for-of-iterator-open-osr-at-inlined-return-non-object.js:
        * stress/for-of-iterator-open-osr-at-iterator-set-local.js:
        * stress/for-of-iterator-open-return-non-object.js:

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

        [JSC] Reflect object should have toStringTag with "Reflect"
        https://bugs.webkit.org/show_bug.cgi?id=214909

        Reviewed by Mark Lam.

        * stress/reflect.js:
        * test262/expectations.yaml:

2020-07-28  Caitlin Potter  <caitp@igalia.com>

        [JSC] add IC support for op_get_private_name
        https://bugs.webkit.org/show_bug.cgi?id=213545

        Reviewed by Saam Barati.

        Add a crashtest for a crash in an earlier edition of the GPN IC patch.

        * stress/get-private-name-cache-failure.js: Added.

2020-07-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC][wasm] Truncating slightly less than INT32_MIN is incorrect
        https://bugs.webkit.org/show_bug.cgi?id=214834

        Reviewed by Darin Adler.

        * wasm/spec-tests/conversions.wast.js:
        * wasm/stress/trunc-int-min-minus-one.js: Added.

2020-07-28  Mark Lam  <mark.lam@apple.com>

        ASSERTION FAILED: isSymbol() in Source/JavaScriptCore/runtime/JSCell.cpp(188)
        https://bugs.webkit.org/show_bug.cgi?id=214837

        Reviewed by Darin Adler.

        * stress/jsc-shell-test-properties-should-not-be-enumerable.js: Added.

2020-07-28  Caio Lima  <ticaiolima@gmail.com>

        [32-bits] Skipping some failing tests on ARMv7 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=214872

        Unreviewed Gardening.

        * stress/ftl-reflect-get-prototype-of.js:
        * stress/intl-suppored-locales-of.js:

2020-07-25  Yusuke Suzuki  <ysuzuki@apple.com>

        Update test262
        https://bugs.webkit.org/show_bug.cgi?id=214791

        Reviewed by Ross Kirsling.

        * test262/config.yaml:
        * test262/expectations.yaml:
        * test262/harness/async-gc.js:
        * test262/latest-changes-summary.txt:
        * test262/test/annexB/language/expressions/typeof/emulates-undefined.js: Added.
        * 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/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js:
        * test262/test/intl402/DisplayNames/length.js:
        * test262/test262-Revision.txt:

2020-07-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Skip unrelated / too-compute-heavy tests in Apple Watch Series 3
        https://bugs.webkit.org/show_bug.cgi?id=214768

        Reviewed by Mark Lam.

        We skip following tests in Apple Watch Series 3.

        1. Tests take very long time to reproduce crash.
        2. Tests for FTL, which are unrelated to Apple Watch Series 3.
        3. Tests for fast for-of semantics update, which is not supported in 32bit architectures.
        4. Tests for denormalized numbers where ceil / floor works differently in ARMv7k as expected.

        * ChakraCore.yaml:
        * stress/for-of-iterator-open-osr-at-inlined-return-non-object.js:
        * stress/for-of-iterator-open-osr-at-iterator-set-local.js:
        * stress/for-of-iterator-open-return-non-object.js:
        * stress/op_bitand.js:
        * stress/op_bitor.js:
        * stress/op_bitxor.js:
        * stress/op_lshift-ConstVar.js:
        * stress/op_lshift-VarConst.js:
        * stress/op_lshift-VarVar.js:
        * stress/op_mul-ConstVar.js:
        * stress/op_mul-VarConst.js:
        * stress/op_mul-VarVar.js:
        * stress/op_rshift-ConstVar.js:
        * stress/op_rshift-VarConst.js:
        * stress/op_rshift-VarVar.js:
        * stress/op_sub-ConstVar.js:
        * stress/op_sub-VarConst.js:
        * stress/op_sub-VarVar.js:
        * stress/op_urshift-ConstVar.js:
        * stress/op_urshift-VarConst.js:
        * stress/op_urshift-VarVar.js:
        * stress/spread-forward-call-varargs-stack-overflow.js:
        * stress/toctou-having-a-bad-time-new-array.js:

2020-07-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG::AbstractValue::filterByValue should re-filter configured m_value via m_type
        https://bugs.webkit.org/show_bug.cgi?id=214721
        <rdar://problem/65882837>

        Reviewed by Mark Lam.

        * stress/speculation-from-structure-and-classinfo-should-agree.js: Added.
        (bar):
        (foo):

2020-07-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSON.parse should not modify non-configurable properties.
        https://bugs.webkit.org/show_bug.cgi?id=163446

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-07-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Do not use hardened Array for Intl supportedLocalesOf
        https://bugs.webkit.org/show_bug.cgi?id=214676

        Reviewed by Mark Lam.

        * stress/intl-suppored-locales-of.js: Added.
        (shouldBe):

2020-07-24  Angelos Oikonomopoulos  <angelos@igalia.com>

        Skip crashing test on mips
        https://bugs.webkit.org/show_bug.cgi?id=214729

        Reviewed by Noam Rosenthal.

        * stress/compare-eq-should-use-known-other-use.js:

2020-07-24  Michael Catanzaro  <mcatanzaro@gnome.org>

        REGRESSION(r264639): Intl.DisplayNames tests failing on all architectures
        https://bugs.webkit.org/show_bug.cgi?id=214589

        Reviewed by Darin Adler.

        Massage the tests for compatibility with ICU 63.1. I don't understand how exactly ICU's
        behavior has changed between releases, and some of the conditions need to be added in
        somewhat strange places, but this at least makes the tests pass.

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

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

        [JSC] Arrow function |this| resolution should not be trapped by with-scope
        https://bugs.webkit.org/show_bug.cgi?id=214716
        <rdar://problem/65980639>

        Reviewed by Darin Adler.

        * stress/proxy-trap-this.js: Added.
        (shouldNotThrow):
        (const.handler.has):
        (test):

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

        [JSC] BigInt can be `false` in boolean context in DFG AI
        https://bugs.webkit.org/show_bug.cgi?id=214678
        <rdar://problem/65894751>

        Reviewed by Mark Lam.

        * stress/bigint-can-be-false-in-boolean-context.js: Added.
        (foo.bar):
        (foo):

2020-07-23  Angelos Oikonomopoulos  <angelos@igalia.com>

        Fix logic error in r264703
        https://bugs.webkit.org/show_bug.cgi?id=214674

        Unreviewed Gardening.

        * stress/intl-displaynames.js:
        * stress/intl-parse-unicode-subtags.js:

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

        Remove ArrayNode::m_optional
        https://bugs.webkit.org/show_bug.cgi?id=214294

        Reviewed by Darin Adler.

        * microbenchmarks/destructuring-array-literal.js: Added.
        * microbenchmarks/function-dot-apply-array-literal.js: Added.
        * stress/apply-second-argument-must-be-array-like.js:
        * stress/destructuring-assignment-syntax.js:

2020-07-22  Angelos Oikonomopoulos  <angelos@igalia.com>

        Skip failing intl tests on ARM
        https://bugs.webkit.org/show_bug.cgi?id=214638

        Unreviewed Gardening.

        * stress/intl-displaynames.js:
        * stress/intl-parse-unicode-subtags.js:

2020-07-21  Michael Catanzaro  <mcatanzaro@gnome.org>

        REGRESSION(r264330): infinite loop in JSC stress tests using cloop
        https://bugs.webkit.org/show_bug.cgi?id=214491

        Reviewed by Saam Barati.

        Run the test only if JIT is enabled.

        * stress/validate-does-gc-with-return-early-from-infinite-loop.js:
        (vm.useJIT):

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

        [ECMA-402] Implement Intl.DisplayNames
        https://bugs.webkit.org/show_bug.cgi?id=209779

        Reviewed by Ross Kirsling.

        * stress/intl-displaynames.js: Added.
        (shouldBe):
        (shouldThrow):
        (vm.icuVersion):
        * stress/intl-parse-unicode-subtags.js: Added.
        (shouldBe):
        (shouldThrow):
        (vm.icuVersion):
        * test262/config.yaml:

2020-07-20  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] eval?.() should be indirect eval
        https://bugs.webkit.org/show_bug.cgi?id=214568

        Reviewed by Keith Miller.

        * test262/expectations.yaml:
        Mark two test cases as passing.

2020-07-20  Keith Miller  <keith_miller@apple.com>

        Turn on FinalizationRegistry test262 tests
        https://bugs.webkit.org/show_bug.cgi?id=214576

        Reviewed by Ross Kirsling.

        * test262/config.yaml:

2020-07-20  Keith Miller  <keith_miller@apple.com>

        [JSC] update test262 (July 2020 edition)
        https://bugs.webkit.org/show_bug.cgi?id=214575

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:
        * test262/harness/atomicsHelper.js:
        * test262/harness/testIntl.js:
        (testWithIntlConstructors):
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Array/prototype/concat/S15.4.4.4_A3_T2.js:
        * test262/test/built-ins/Array/prototype/concat/S15.4.4.4_A3_T3.js:
        * test262/test/built-ins/Atomics/exchange/nonshared-int-views.js:
        (testWithTypedArrayConstructors): Deleted.
        * test262/test/built-ins/Atomics/waitAsync/bigint/negative-index-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/out-of-range-index-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/poisoned-object-for-timeout-throws-agent.js:
        (262.agent.receiveBroadcast):
        (1n.then.async agentCount):
        * test262/test/built-ins/Atomics/waitAsync/bigint/poisoned-object-for-timeout-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/symbol-for-timeout-throws-agent.js:
        (1n.then.async agentCount):
        * test262/test/built-ins/Atomics/waitAsync/negative-index-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/null-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/out-of-range-index-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/poisoned-object-for-timeout-throws-agent.js:
        (262.agent.receiveBroadcast):
        (1.then.async agentCount):
        * test262/test/built-ins/Atomics/waitAsync/poisoned-object-for-timeout-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/returns-result-object-value-is-promise-resolves-to-ok.js:
        * test262/test/built-ins/Atomics/waitAsync/returns-result-object-value-is-promise-resolves-to-timed-out.js:
        * test262/test/built-ins/Atomics/waitAsync/returns-result-object-value-is-string-not-equal.js:
        * test262/test/built-ins/Atomics/waitAsync/returns-result-object-value-is-string-timed-out.js:
        * test262/test/built-ins/Atomics/waitAsync/symbol-for-index-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/symbol-for-timeout-throws-agent.js:
        (1.then.async agentCount):
        * test262/test/built-ins/Atomics/waitAsync/validate-arraytype-before-index-coercion.js:
        * test262/test/built-ins/Atomics/waitAsync/validate-arraytype-before-timeout-coercion.js:
        * test262/test/built-ins/Atomics/waitAsync/validate-arraytype-before-value-coercion.js:
        * test262/test/built-ins/JSON/stringify/replacer-array-proxy.js:
        * test262/test/built-ins/Promise/allSettled/resolve-from-same-thenable.js:
        * test262/test/built-ins/Promise/any/iter-returns-true-reject.js:
        * test262/test/built-ins/Promise/any/iter-returns-undefined-reject.js:
        * test262/test/built-ins/Promise/prototype/finally/resolved-observable-then-calls.js:
        (then):
        * test262/test/built-ins/Promise/prototype/finally/species-constructor.js:
        (then):
        * test262/test/built-ins/Promise/prototype/finally/species-symbol.js: Removed.
        * test262/test/built-ins/Promise/prototype/finally/subclass-reject-count.js:
        (FooPromise.reject.finally):
        (then.ERROR.catch): Deleted.
        * test262/test/built-ins/Promise/prototype/finally/subclass-resolve-count.js:
        (then):
        * test262/test/intl402/DateTimeFormat/constructor-options-fractionalSecondDigits-valid.js:
        (toString):
        (valueOf): Deleted.
        * test262/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-undefined-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/fractionalSecondDigits.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-undefined-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/fractionalSecondDigits.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js:
        * test262/test/intl402/DisplayNames/ctor-custom-prototype.js:
        * test262/test/intl402/DisplayNames/ctor-default-prototype.js:
        * test262/test/intl402/DisplayNames/instance-extensible.js:
        * test262/test/intl402/DisplayNames/locales-symbol-length.js:
        * test262/test/intl402/DisplayNames/options-fallback-abrupt-throws.js:
        * test262/test/intl402/DisplayNames/options-fallback-invalid-throws.js:
        * test262/test/intl402/DisplayNames/options-fallback-toString-abrupt-throws.js:
        (fallback.toString):
        (fallback.valueOf):
        (fallback.Symbol.toPrimitive):
        (options.fallback.toString): Deleted.
        (options.fallback.valueOf): Deleted.
        (options.fallback.Symbol.toPrimitive): Deleted.
        * test262/test/intl402/DisplayNames/options-fallback-valid.js:
        * test262/test/intl402/DisplayNames/options-localeMatcher-valid.js:
        * test262/test/intl402/DisplayNames/options-random-properties-unchecked.js:
        * test262/test/intl402/DisplayNames/options-style-valid.js:
        * test262/test/intl402/DisplayNames/options-type-invalid-throws.js:
        * test262/test/intl402/DisplayNames/options-type-valid.js:
        * test262/test/intl402/DisplayNames/proto-from-ctor-realm.js:
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/default-option-values.js:
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/option-fallback.js:
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/option-style.js:
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/return-object.js:
        * test262/test/language/computed-property-names/class/static/method-number.js:
        * test262/test/language/computed-property-names/class/static/method-string.js:
        * test262/test/language/computed-property-names/class/static/method-symbol.js:
        * test262/test/language/expressions/optional-chaining/early-errors-tail-position-template-string-esi.js: Removed.
        * test262/test/language/expressions/optional-chaining/early-errors-tail-position-template-string.js: Removed.
        * test262/test/language/expressions/optional-chaining/eval-optional-call.js:
        (fn):
        * test262/test262-Revision.txt:

2020-07-20  Keith Miller  <keith_miller@apple.com>

        Add support for FinalizationRegistries
        https://bugs.webkit.org/show_bug.cgi?id=199888

        Reviewed by Yusuke Suzuki.

        Shamelessly copy v8's tests and refactor them to work with conservative GC.

        * stress/resources/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):
        (isOptimized):
        (isTurboFanned):
        (MjsUnitAssertionError.prepareStackTrace):
        * stress/v8-cleanup-from-different-realm.js: Added.
        (let.timeout_func):
        * stress/v8-cleanup-proxy-from-different-realm.js: Added.
        (let.timeout_func):
        * stress/v8-finalization-registry-basics.js: Added.
        (TestConstructFinalizationRegistry):
        (TestFinalizationRegistryConstructorCallAsFunction):
        (TestConstructFinalizationRegistryCleanupNotCallable):
        (TestConstructFinalizationRegistryWithNonCallableProxyAsCleanup):
        (TestRegisterTargetAndHoldingsSameValue):
        (TestRegisterWithoutFinalizationRegistry):
        (TestUnregisterWithNonExistentKey):
        (TestUnregisterWithNonFinalizationRegistry):
        (TestWeakRefConstructorWithNonObject):
        (TestWeakRefWithProxy):
        * stress/v8-finalizationregistry-and-weakref.js: Added.
        (let.cleanup):
        (setTimeout):
        * stress/v8-finalizationregistry-keeps-holdings-alive.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-finalizationregistry-scheduled-for-cleanup-multiple-times.js: Added.
        (let.cleanup0):
        (let.cleanup1):
        (let.timeout_func):
        * stress/v8-multiple-dirty-finalization-registries.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-reentrant-gc-from-cleanup.js: Added.
        (let.reentrant_gc):
        (setTimeout):
        * stress/v8-stress-finalizationregistry-dirty-enqueue.js: Added.
        (i.registries.push.new.FinalizationRegistry):
        (registries.forEach):
        * stress/v8-undefined-holdings.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-unregister-after-cleanup.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-unregister-before-cleanup.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-unregister-called-twice.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-unregister-inside-cleanup2.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-unregister-inside-cleanup3.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-unregister-many.js: Added.
        (let.cleanup):
        (let.timeout_func):
        * stress/v8-weak-unregistertoken.js: Added.
        (FR.new.FinalizationRegistry):
        (tryAgain):

2020-07-18  Mark Lam  <mark.lam@apple.com>

        Fixed regression due to r264507: Math.{min|max} inequality test should use DoubleNotEqualOrUnordered instead DoubleNotEqualAndOrdered.
        https://bugs.webkit.org/show_bug.cgi?id=214526
        <rdar://problem/65778061>

        Reviewed by Yusuke Suzuki.

        * stress/math-max-min.js: Added.
        (isNegativeZero):
        (numberAsString):
        (testMax):
        (testMin):
        (assertEq):

2020-07-18  Alexey Shvayka  <shvaikalesh@gmail.com>

        Redefining a property should not change its insertion index (Object.keys order)
        https://bugs.webkit.org/show_bug.cgi?id=142933

        Reviewed by Saam Barati.

        * ChakraCore.yaml:
        * ChakraCore/test/es5/EnumeratingWithES5.baseline-jsc: Removed.
        * microbenchmarks/redefine-property-accessor-dictionary.js: Added.
        * microbenchmarks/redefine-property-accessor.js: Added.
        * microbenchmarks/redefine-property-data-dictionary.js: Added.
        * microbenchmarks/redefine-property-data.js: Added.
        * stress/define-own-indexed-property-fast-path.js:
        * stress/redefine-property-enumerable.js: Added.
        * stress/redefine-property-get.js: Added.
        * stress/redefine-property-set.js: Added.
        * stress/redefine-property-value.js: Added.
        * stress/redefine-property-writable.js: Added.
        * test262/expectations.yaml: Mark 12 test cases as passing.

2020-07-17  Xan Lopez  <xan@igalia.com>

        Math.max() can yield the wrong result for max(0, -0).
        https://bugs.webkit.org/show_bug.cgi?id=204457

        Reviewed by Mark Lam.

        Add a test to make sure we follow the spec in Math.{max,min} and
        -0.0 < 0.0.

        * stress/math-max-min-negative-zero.js: Added.
        (assert):
        (test):

2020-07-17  Alexey Shvayka  <shvaikalesh@gmail.com>

        emitIsUndefined() should not special-case [[IsHTMLDDA]] objects
        https://bugs.webkit.org/show_bug.cgi?id=214443

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/default-value-destructuring-array.js: Added.
        * microbenchmarks/default-value-destructuring-object.js: Added.
        * microbenchmarks/default-value-function-parameters.js: Added.
        * stress/default-value-masquerader.js: Added.
        * test262/expectations.yaml: Mark 10 test cases as passing.

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

        [JSC] Use unvalidatedGet instead of get to access UnlinkedCodeBlock from CodeBlock destructor
        https://bugs.webkit.org/show_bug.cgi?id=214403
        <rdar://problem/65527229>

        Reviewed by Mark Lam.

        * stress/codeblock-destructor-access-unlinkedcodeblock.js: Added.
        (foo):

2020-07-15  Alexey Shvayka  <shvaikalesh@gmail.com>

        Emit HasOwnPropertyFunctionCallDotNode for "Reflect" identifiers
        https://bugs.webkit.org/show_bug.cgi?id=214325

        Reviewed by Darin Adler and Saam Barati.

        * microbenchmarks/has-own-property-for-in-loop-reflect-name.js: Added.
        * stress/reflect-has.js:
        * stress/reflect.js:

2020-07-14  Saam Barati  <sbarati@apple.com>

        We must hold the CodeBlock lock when calling StructureStubInfo::reset
        https://bugs.webkit.org/show_bug.cgi?id=214332
        <rdar://problem/64940787>

        Reviewed by Yusuke Suzuki.

        * stress/hold-lock-when-resetting-structure-stub-info.js: Added.
        (foo.bar.C):
        (foo.bar):
        (foo):

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

        Handle out of memory error while creating an error message in the literal parser.
        https://bugs.webkit.org/show_bug.cgi?id=214313
        <rdar://problem/65031745>

        Reviewed by Saam Barati.

        * stress/out-of-memory-making-error-string-in-literal-parser.js: Added.

2020-07-14  Angelos Oikonomopoulos  <angelos@igalia.com>

        Skip intermittently failing type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value on mips
        https://bugs.webkit.org/show_bug.cgi?id=214254

        Reviewed by Carlos Alberto Lopez Perez.

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

2020-07-13  Saam Barati  <sbarati@apple.com>

        returnEarlyFromInfiniteLoopsForFuzzing and validateDoesGC may fail when used together in the FTL
        https://bugs.webkit.org/show_bug.cgi?id=214289
        <rdar://problem/65272138>

        Reviewed by Keith Miller.

        * stress/validate-does-gc-with-return-early-from-infinite-loop.js: Added.

2020-07-13  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] IntlLocale::initializeLocale should have scope.release
        https://bugs.webkit.org/show_bug.cgi?id=214271
        <rdar://problem/65467314>

        Reviewed by Darin Adler.

        * stress/intl-locale.js:

2020-07-13  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] FTL isCellOrMisc should be isCellOrMiscOrBigInt32
        https://bugs.webkit.org/show_bug.cgi?id=214269
        <rdar://problem/65475129>

        Reviewed by Mark Lam.

        * stress/ftl-bigint32-and-cell-or-misc.js: Added.
        (foo):

2020-07-13  Keith Miller  <keith_miller@apple.com>

        Clean up SourceProvider and add caller relative load script to jsc.cpp
        https://bugs.webkit.org/show_bug.cgi?id=214205

        Reviewed by Yusuke Suzuki.

        There are two main changes here. The first is converting most
        invocations of load to also pass "caller relative" as the second
        parameter. This lets those tests be run from any working directory
        rather than only the same directory as the test script.

        The second change is to prohibit "bare-name" specifiers in our
        CLI's module loader. This matches pretty much all other module
        loaders, including WebCore and our Obj-C API.

        * modules/aliased-names.js:
        * modules/aliasing/drink.js:
        * modules/caching-should-not-make-ambiguous.js:
        * modules/default-error/main.js:
        * modules/execution-order-cyclic/5.js:
        * modules/execution-order-dag/5.js:
        * modules/execution-order-tree/5.js:
        * modules/indirect-export-error/indirect-export-default-2.js:
        * modules/namespace-ambiguous/ambiguous-2.js:
        * modules/namespace-ambiguous/ambiguous.js:
        * modules/namespace-re-export.js:
        * modules/uncacheable-when-see-star.js:
        * stress/global-const-redeclaration-setting-2.js:
        * stress/global-const-redeclaration-setting-3.js:
        * stress/global-const-redeclaration-setting-4.js:
        * stress/global-const-redeclaration-setting-5.js:
        * stress/global-const-redeclaration-setting.js:
        * stress/global-lexical-redeclare-variable.js:
        * stress/global-lexical-redefine-const.js:
        * stress/global-lexical-variable-tdz.js:
        * stress/global-lexical-variable-unresolved-property.js:
        * stress/global-property-into-variable-get-from-scope.js:
        * stress/import-with-empty-string.js:
        * stress/jsonp-literal-parser-semicolon-is-not-assignment.js:
        * stress/op_add.js:
        * stress/op_bitand.js:
        * stress/op_bitor.js:
        * stress/op_bitxor.js:
        * stress/op_div-ConstVar.js:
        * stress/op_div-VarConst.js:
        * stress/op_div-VarVar.js:
        * stress/op_lshift-ConstVar.js:
        * stress/op_lshift-VarConst.js:
        * stress/op_lshift-VarVar.js:
        * stress/op_mod-ConstVar.js:
        * stress/op_mod-VarConst.js:
        * stress/op_mod-VarVar.js:
        * stress/op_mul-ConstVar.js:
        * stress/op_mul-VarConst.js:
        * stress/op_mul-VarVar.js:
        * stress/op_negate.js:
        * stress/op_postdec.js:
        * stress/op_postinc.js:
        * stress/op_predec.js:
        * stress/op_preinc.js:
        * stress/op_rshift-ConstVar.js:
        * stress/op_rshift-VarConst.js:
        * stress/op_rshift-VarVar.js:
        * stress/op_sub-ConstVar.js:
        * stress/op_sub-VarConst.js:
        * stress/op_sub-VarVar.js:
        * stress/op_urshift-ConstVar.js:
        * stress/op_urshift-VarConst.js:
        * stress/op_urshift-VarVar.js:
        * stress/regress-159779-1.js:
        (makeUseRegressionTest):
        * stress/regress-159779-2.js:
        (makeUseRegressionTest):
        * stress/resources/typedarray-constructor-helper-functions.js:
        * stress/resources/typedarray-test-helper-functions.js:
        * stress/sampling-profiler-anonymous-function.js:
        * stress/sampling-profiler-basic.js:
        * stress/sampling-profiler-bound-function-name.js:
        * stress/sampling-profiler-deep-stack.js:
        * stress/sampling-profiler-display-name.js:
        * stress/sampling-profiler-internal-function-name.js:
        * stress/sampling-profiler-microtasks.js:
        * stress/sampling-profiler-wasm-name-section.js:
        * stress/sampling-profiler-wasm.js:
        * stress/shadow-chicken-disabled.js:
        * stress/shadow-chicken-enabled.js:
        * stress/typedarray-constructor.js:
        * stress/typedarray-copyWithin.js:
        * stress/typedarray-every.js:
        * stress/typedarray-fill.js:
        * stress/typedarray-filter.js:
        * stress/typedarray-find.js:
        * stress/typedarray-findIndex.js:
        * stress/typedarray-forEach.js:
        * stress/typedarray-from.js:
        * stress/typedarray-includes.js:
        * stress/typedarray-indexOf.js:
        * stress/typedarray-lastIndexOf.js:
        * stress/typedarray-map.js:
        * stress/typedarray-of.js:
        * stress/typedarray-reduce.js:
        * stress/typedarray-reduceRight.js:
        * stress/typedarray-set.js:
        * stress/typedarray-slice.js:
        * stress/typedarray-some.js:
        * stress/typedarray-sort.js:
        * stress/typedarray-subarray.js:
        * wasm/Builder.js:
        * wasm/Builder_WebAssemblyBinary.js:
        * wasm/LowLevelBinary.js:
        * wasm/README.md:
        * wasm/WASM.js:
        * wasm/regress/selectf64.js:
        * wasm/spec-harness.js:
        (import.string_appeared_here.then):

2020-07-12  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, mark wasm/references/multitable.js as memory-exhausting

        Got footprint exceeding crashes in Debug JSC tests in GTK.

        * wasm/references/multitable.js:

2020-07-11  Yusuke Suzuki  <ysuzuki@apple.com>

        Intl.Locale maximize, minimize should return Intl.Locale instead of String
        https://bugs.webkit.org/show_bug.cgi?id=214223
        <rdar://problem/65413620>

        Reviewed by Ross Kirsling.

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

2020-07-09  Caio Lima  <ticaiolima@gmail.com>

        [JSC][32-bits] Test gardening July 9th
        https://bugs.webkit.org/show_bug.cgi?id=214138

        Unreviewed Gardening.

        * stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js:
        * stress/butterfly-zero-unused-butterfly-properties.js:
        * stress/check-stack-overflow-before-value-profiling-arguments.js:

2020-07-09  Alexey Shvayka  <shvaikalesh@gmail.com>

        ErrorInstance::finishCreation() puts "message" twice, with different attributes
        https://bugs.webkit.org/show_bug.cgi?id=214089

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/error-source-appender.js: Added.

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

        [JSC] BytecodeGenerator should be robust against failed constant generation
        https://bugs.webkit.org/show_bug.cgi?id=214062
        <rdar://problem/65117916>

        Reviewed by Saam Barati.

        * stress/bigint-oom-in-codegen-array-literal-context.js: Added.
        (shouldThrow):
        (test):
        * stress/bigint-oom-in-codegen-binary-conditional-context.js: Added.
        (shouldThrow):
        (test):
        * stress/bigint-oom-in-codegen-conditional-context.js: Added.
        (shouldThrow):
        (test):

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

        [JSC] Should not pass Exception to JSPromise::reject
        https://bugs.webkit.org/show_bug.cgi?id=214061
        <rdar://problem/65134450>

        Reviewed by Mark Lam.

        * stress/import-exception.js: Added.
        (import.string_appeared_here.then):

2020-07-07  Keith Miller  <keith_miller@apple.com>

        Bytecode UseDef should be aware of checkpoints
        https://bugs.webkit.org/show_bug.cgi?id=213566

        Reviewed by Saam Barati.

        * stress/def-then-use-in-single-bytecode-with-checkpoints-for-of.js: Added.
        (foo):

2020-07-04  Alexey Shvayka  <shvaikalesh@gmail.com>

        %TypedArray%.prototype.{indexOf,lastIndexOf} are not spec-perfect
        https://bugs.webkit.org/show_bug.cgi?id=213715

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/array-prototype-indexOf-empty.js: Added.
        * microbenchmarks/typed-array-indexOf-empty.js: Added.
        * stress/array-indexof-tointeger-order.js: Added.
        * test262/expectations.yaml: Mark 10 test cases as passing.

2020-07-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Promise should check whether a user-provided function is set by using `@isUndefinedOrNull`
        https://bugs.webkit.org/show_bug.cgi?id=213951

        Reviewed by Ross Kirsling.

        * stress/masquerader-as-function-in-promise.js: Added.

2020-07-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add exception checks before and after viewWithUnderlyingString
        https://bugs.webkit.org/show_bug.cgi?id=213923
        <rdar://problem/65068473>

        Reviewed by Sam Weinig.

        * stress/exception-checks-before-and-after-viewwithunderlyingstring.js: Added.
        (shouldThrow):

2020-07-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add exception checks in JSStringBuilder and Array#join
        https://bugs.webkit.org/show_bug.cgi?id=213915
        <rdar://problem/64878225>

        Reviewed by Saam Barati and Mark Lam.

        * stress/out-of-memory-handle-in-join.js: Added.
        (shouldThrow):

2020-07-02  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, mark JSTests/test262/test/intl402/NumberFormat/prototype/format/numbering-systems.js fail since it requires ICU 66
        https://bugs.webkit.org/show_bug.cgi?id=213872

        This test in test262 requires ICU 66 while Catalina bot is using ICU 64.

        * test262/config.yaml:

2020-07-02  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Configure option-offered numberingSystem in Intl.NumberFormat through locale
        https://bugs.webkit.org/show_bug.cgi?id=213872

        Reviewed by Ross Kirsling.

        * stress/intl-numberformat-nu.js: Added.
        (shouldBe):
        * test262/expectations.yaml:

2020-07-01  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Intl.Collator should set usage:"search" option through ICU locale
        https://bugs.webkit.org/show_bug.cgi?id=213869

        Reviewed by Ross Kirsling.

        * stress/intl-collator-co-extension.js: Added.
        (shouldBe):
        (shouldBeArray):
        (explicitTrueBeforeICU67):
        * test262/expectations.yaml:

2020-06-26  Yusuke Suzuki  <ysuzuki@apple.com>

        Update test262
        https://bugs.webkit.org/show_bug.cgi?id=213676

        Reviewed by Ross Kirsling.

        Update and rebaseline expectations.

        * test262/expectations.yaml:
        * test262/harness/testBigIntTypedArray.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/harness/testIntl.js:
        * test262/harness/testTypedArray.js:
        (testWithNonAtomicsFriendlyTypedArrayConstructors):
        (testWithAtomicsFriendlyTypedArrayConstructors):
        * test262/latest-changes-summary.txt:
        * test262/test/annexB/built-ins/Function/createdynfn-no-line-terminator-html-close-comment-body.js:
        * test262/test/built-ins/Array/prototype/indexOf/length-zero-returns-minus-one.js: Added.
        (fromIndex.valueOf):
        * test262/test/built-ins/Array/prototype/lastIndexOf/length-zero-returns-minus-one.js: Added.
        (fromIndex.valueOf):
        * test262/test/built-ins/Atomics/add/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/add/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/add/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/add/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/add/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/and/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/and/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/and/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/and/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/and/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/compareExchange/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/compareExchange/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/compareExchange/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/compareExchange/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/exchange/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/exchange/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/exchange/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/load/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/load/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/load/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/load/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/load/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-count-evaluation-throws.js: Added.
        (const.poisoned.valueOf):
        * test262/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-index-evaluation-throws.js: Added.
        (const.poisoned.valueOf):
        * test262/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-non-shared-int-views-throws.js: Added.
        (const.poisoned.valueOf):
        * test262/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-returns-0.js: Added.
        * test262/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-throws.js: Removed.
        * test262/test/built-ins/Atomics/notify/non-shared-bufferdata-count-evaluation-throws.js: Added.
        (const.poisoned.valueOf):
        * test262/test/built-ins/Atomics/notify/non-shared-bufferdata-index-evaluation-throws.js: Added.
        (const.poisoned.valueOf):
        * test262/test/built-ins/Atomics/notify/non-shared-bufferdata-non-shared-int-views-throws.js: Renamed from JSTests/test262/test/built-ins/Atomics/notify/non-shared-bufferdatate-non-shared-int-views.js.
        * test262/test/built-ins/Atomics/notify/non-shared-bufferdata-returns-0.js: Added.
        * test262/test/built-ins/Atomics/notify/non-shared-bufferdata-throws.js: Removed.
        * test262/test/built-ins/Atomics/or/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/or/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/or/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/or/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/or/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/store/bigint/bad-range.js:
        (testWithBigIntTypedArrayConstructors): Deleted.
        * test262/test/built-ins/Atomics/store/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/store/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/store/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/store/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/store/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/sub/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/sub/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/sub/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/sub/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/sub/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/false-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/good-views.js:
        (async const):
        * test262/test/built-ins/Atomics/waitAsync/bigint/negative-timeout.js:
        (1.value.then):
        * test262/test/built-ins/Atomics/waitAsync/bigint/null-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/object-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/true-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/undefined-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/bigint/value-not-equal.js:
        * test262/test/built-ins/Atomics/waitAsync/false-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/good-views.js:
        (async const):
        * test262/test/built-ins/Atomics/waitAsync/negative-timeout.js:
        (then):
        * test262/test/built-ins/Atomics/waitAsync/null-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/object-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/true-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/undefined-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/value-not-equal.js:
        * test262/test/built-ins/Atomics/xor/bigint/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/xor/bigint/nonshared-int-views.js: Removed.
        * test262/test/built-ins/Atomics/xor/non-shared-bufferdata.js: Added.
        * test262/test/built-ins/Atomics/xor/non-shared-int-views-throws.js: Added.
        * test262/test/built-ins/Atomics/xor/nonshared-int-views.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors-absent-on-prototype.js: Added.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/invoked-as-accessor.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/invoked-as-func.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/length.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/name.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/prop-desc.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/return-from-iterable-errors.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/return-new-array-from-list.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/this-has-no-typedarrayname-internal.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/prototype/errors/this-is-not-object.js: Removed.
        * test262/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js:
        (catch):
        * test262/test/built-ins/Promise/all/S25.4.4.1_A2.2_T1.js:
        (then):
        * test262/test/built-ins/Promise/all/S25.4.4.1_A7.2_T1.js:
        (Promise.all.p1.then):
        (p1.then):
        (then):
        * test262/test/built-ins/Promise/all/S25.4.4.1_A8.1_T1.js:
        (p1.then):
        (p2.then):
        * test262/test/built-ins/Promise/all/invoke-resolve-on-promises-every-iteration-of-custom.js:
        (values.then):
        * test262/test/built-ins/Promise/all/invoke-resolve-on-promises-every-iteration-of-promise.js:
        (Promise.all.values.then):
        * test262/test/built-ins/Promise/all/invoke-resolve-on-values-every-iteration-of-promise.js:
        (Promise.all.values.then):
        * test262/test/built-ins/Promise/allSettled/invoke-resolve-on-promises-every-iteration-of-custom.js:
        (values.then):
        * test262/test/built-ins/Promise/allSettled/invoke-resolve-on-promises-every-iteration-of-promise.js:
        (Promise.allSettled.values.then):
        * test262/test/built-ins/Promise/allSettled/invoke-resolve-on-values-every-iteration-of-promise.js:
        (Promise.allSettled.values.then):
        * test262/test/built-ins/Promise/allSettled/resolved-immed.js:
        (then):
        * test262/test/built-ins/Promise/allSettled/resolved-sequence-extra-ticks.js:
        (Promise.allSettled.p1.then):
        (p1.then):
        (then):
        * test262/test/built-ins/Promise/allSettled/resolved-sequence-mixed.js:
        (p1.catch):
        (p3.then):
        (p2.then):
        (p3.catch):
        * test262/test/built-ins/Promise/allSettled/resolved-sequence-with-rejections.js:
        (p1.catch):
        (p2.then):
        (p2.catch):
        * test262/test/built-ins/Promise/allSettled/resolved-sequence.js:
        (p1.then):
        (p2.then):
        * test262/test/built-ins/Promise/any/invoke-resolve-on-promises-every-iteration-of-custom.js:
        (values.then):
        * test262/test/built-ins/Promise/any/invoke-resolve-on-promises-every-iteration-of-promise.js:
        (Promise.any.values.then):
        * test262/test/built-ins/Promise/any/invoke-resolve-on-values-every-iteration-of-custom.js:
        (values.then):
        * test262/test/built-ins/Promise/any/invoke-resolve-on-values-every-iteration-of-promise.js:
        (Promise.any.values.then):
        * test262/test/built-ins/Promise/any/invoke-then-on-promises-every-iteration.js:
        (Promise.any.promises.then):
        * test262/test/built-ins/Promise/any/resolved-sequence-extra-ticks.js:
        (Promise.any.p1.then):
        (p1.then):
        (then):
        * test262/test/built-ins/Promise/any/resolved-sequence-mixed.js:
        (p1.catch):
        (p3.then):
        (p2.then):
        (p3.catch):
        * test262/test/built-ins/Promise/any/resolved-sequence-with-rejections.js:
        (p1.catch):
        (p2.then):
        (p2.catch):
        * test262/test/built-ins/Promise/any/resolved-sequence.js:
        (p1.then):
        (p2.then):
        * test262/test/built-ins/Promise/prototype/finally/rejected-observable-then-calls.js:
        (then):
        * test262/test/built-ins/Promise/prototype/finally/rejection-reason-no-fulfill.js:
        (then):
        * test262/test/built-ins/Promise/prototype/finally/rejection-reason-override-with-throw.js:
        (then):
        * test262/test/built-ins/Promise/prototype/finally/resolution-value-no-override.js:
        (then):
        * test262/test/built-ins/Promise/prototype/finally/resolved-observable-then-calls.js:
        (then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.4_A1.1_T1.js:
        (then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T1.js:
        (then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T2.js:
        (then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.4_A2.1_T3.js:
        (Promise.resolve.then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.1_T1.js:
        (p.then):
        (Promise.resolve.then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.2_T1.js:
        (p.then):
        (Promise.resolve.then):
        * test262/test/built-ins/Promise/prototype/then/S25.4.5.3_A5.3_T1.js:
        (Promise.resolve.then):
        * test262/test/built-ins/Promise/race/S25.4.4.3_A6.1_T1.js:
        (p.then):
        (Promise.resolve.then):
        (then):
        * test262/test/built-ins/Promise/race/S25.4.4.3_A6.2_T1.js:
        (Promise.resolve.then):
        (then):
        * test262/test/built-ins/Promise/race/S25.4.4.3_A7.1_T1.js:
        (p.then):
        (Promise.resolve.then):
        (then):
        * test262/test/built-ins/Promise/race/S25.4.4.3_A7.1_T2.js:
        (p.then):
        (Promise.resolve.then):
        (then):
        * test262/test/built-ins/Promise/race/S25.4.4.3_A7.1_T3.js:
        (p.then):
        (Promise.resolve.then):
        (then):
        * test262/test/built-ins/Promise/race/S25.4.4.3_A7.2_T1.js:
        (Promise.resolve.then):
        (then):
        * test262/test/built-ins/Promise/race/invoke-resolve-on-promises-every-iteration-of-custom.js: Copied from JSTests/test262/test/built-ins/Promise/all/invoke-resolve-on-promises-every-iteration-of-custom.js.
        (Custom):
        (Custom.resolve):
        (Promise.resolve):
        (values.then):
        * test262/test/built-ins/Promise/race/invoke-resolve-on-promises-every-iteration-of-promise.js: Copied from JSTests/test262/test/built-ins/Promise/all/invoke-resolve-on-promises-every-iteration-of-promise.js.
        (Promise.resolve):
        (Promise.race.values.then):
        * test262/test/built-ins/Promise/race/invoke-resolve-on-values-every-iteration-of-promise.js: Copied from JSTests/test262/test/built-ins/Promise/all/invoke-resolve-on-values-every-iteration-of-promise.js.
        (Promise.resolve):
        (Promise.race.values.then):
        * test262/test/built-ins/Promise/race/reject-from-same-thenable.js: Added.
        (Constructor.reject):
        (Constructor.resolve):
        (let.a.then):
        * test262/test/built-ins/Promise/race/resolve-element-function-extensible.js: Added.
        (let.thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/race/resolve-element-function-name.js: Added.
        (let.thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/race/resolve-element-function-nonconstructor.js: Added.
        (let.thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/race/resolve-element-function-prototype.js: Added.
        (let.thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/race/resolve-from-same-thenable.js: Added.
        (Constructor.resolve):
        (let.a.then):
        * test262/test/built-ins/Promise/race/resolve-ignores-late-rejection-deferred.js: Added.
        (let.lateRejector.then):
        * test262/test/built-ins/Promise/race/resolve-ignores-late-rejection.js: Added.
        (let.resolver.then):
        (let.lateRejector.then):
        * test262/test/built-ins/Promise/race/resolved-sequence-extra-ticks.js: Added.
        (a.then):
        (then):
        * test262/test/built-ins/Promise/race/resolved-sequence-mixed.js: Added.
        (Promise.all.a.catch):
        (c.then):
        (b.then):
        (catch):
        * test262/test/built-ins/Promise/race/resolved-sequence-with-rejections.js: Added.
        (Promise.all.a.catch):
        (b.catch):
        * test262/test/built-ins/Promise/race/resolved-sequence.js: Added.
        (Promise.all.a.then):
        (b.then):
        * test262/test/built-ins/Promise/race/resolved-then-catch-finally.js: Added.
        (let.b.Promise.resolve.string_appeared_here.then):
        (let.c.Promise.reject.string_appeared_here.then):
        (let.f.Promise.resolve.string_appeared_here.finally):
        (let.g.Promise.reject.string_appeared_here.finally):
        * test262/test/built-ins/Promise/resolve/S25.4.4.5_A3.1_T1.js:
        (thenable.then):
        (p1.then):
        * test262/test/built-ins/Promise/resolve/S25.Promise_resolve_foreign_thenable_2.js:
        (thenable.then):
        (p.then):
        * test262/test/intl402/DateTimeFormat/constructor-options-fractionalSecondDigits-valid.js:
        (valueOf):
        * test262/test/intl402/NumberFormat/constructor-order.js:
        * test262/test/intl402/NumberFormat/constructor-unit.js:
        (string_appeared_here.new.Intl.NumberFormat):
        * test262/test/intl402/NumberFormat/prototype/format/numbering-systems.js:
        (digitList.of.Object.entries):
        * test262/test/language/expressions/class/elements/after-same-line-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-computed-names.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-computed-symbol-names.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-grammar-privatename-identifier-semantics-stringvalue.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-literal-names-asi.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-literal-names.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-private-field-usage.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-private-method-getter-usage.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-private-method-usage.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-private-names.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-field-identifier-initializer.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-field-identifier.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-private-getter-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-private-getter.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-private-method-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-private-method.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-private-setter-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-private-setter.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-privatename-identifier-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-privatename-identifier-initializer-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-privatename-identifier-initializer.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        (C.get return):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-async-generator-method-privatename-identifier.js:
        (C):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-async-method-privatename-identifier-alt.js:
        (C.async return):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-async-method-privatename-identifier.js:
        (C):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-generator-method-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-method-privatename-identifier-alt.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-method-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-alt-by-classname.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-by-classname.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-initializer-alt.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-initializer.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-static-private-fields.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-static-private-methods-with-fields.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-static-private-methods.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-gen-string-literal-names.js:
        (prototype.C.m.next.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-computed-names.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-computed-symbol-names.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-grammar-privatename-identifier-semantics-stringvalue.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-literal-names-asi.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-literal-names.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-private-field-usage.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-private-method-getter-usage.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-private-method-usage.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-private-names.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-field-identifier-initializer.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-field-identifier.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-private-getter-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-private-getter.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-private-method-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-private-method.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-private-setter-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-private-setter.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-privatename-identifier-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-privatename-identifier-initializer-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-privatename-identifier-initializer.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        (C.get return):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-async-generator-method-privatename-identifier.js:
        (C):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-async-method-privatename-identifier-alt.js:
        (C.async return):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-async-method-privatename-identifier.js:
        (C):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-generator-method-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-method-privatename-identifier-alt.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-method-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-alt-by-classname.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-by-classname.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-initializer-alt.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-initializer.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-static-private-fields.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-static-private-methods-with-fields.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-static-private-methods.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-async-method-string-literal-names.js:
        (prototype.C.m.then):
        * test262/test/language/expressions/class/elements/after-same-line-static-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/after-same-line-static-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/multiple-definitions-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/multiple-definitions-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/multiple-definitions-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/multiple-definitions-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/multiple-stacked-definitions-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/multiple-stacked-definitions-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/multiple-stacked-definitions-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/multiple-stacked-definitions-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/new-no-sc-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/new-no-sc-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/new-no-sc-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/new-no-sc-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/new-sc-line-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/new-sc-line-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/new-sc-line-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/new-sc-line-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/new-sc-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/new-sc-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/new-sc-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/new-sc-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/private-methods/prod-private-async-generator.js:
        (ctorPromise.then):
        * test262/test/language/expressions/class/elements/private-methods/prod-private-async-method.js:
        (ctorPromise.then):
        * test262/test/language/expressions/class/elements/regular-definitions-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/regular-definitions-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/regular-definitions-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/regular-definitions-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/same-line-async-gen-computed-names.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-computed-symbol-names.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-grammar-privatename-identifier-semantics-stringvalue.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-literal-names-asi.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-literal-names.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-private-field-usage.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-private-method-getter-usage.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-private-method-usage.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-private-names.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-field-identifier-initializer.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-field-identifier.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-private-getter-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-private-getter.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-private-method-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-private-method.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-private-setter-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-private-setter.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-privatename-identifier-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-privatename-identifier-initializer-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-privatename-identifier-initializer.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        (assertions):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-async-generator-method-privatename-identifier.js:
        (c.m.next.then.assertions):
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-async-method-privatename-identifier-alt.js:
        (c.m.next.then.assertions):
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-async-method-privatename-identifier.js:
        (c.m.next.then.assertions):
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-generator-method-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-method-privatename-identifier-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-method-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier-alt-by-classname.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier-by-classname.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier-initializer-alt.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier-initializer.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-rs-static-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-static-private-fields.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-static-private-methods-with-fields.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-static-private-methods.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-gen-string-literal-names.js:
        (c.m.next.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-computed-names.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-computed-symbol-names.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-grammar-privatename-identifier-semantics-stringvalue.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-literal-names-asi.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-literal-names.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-private-field-usage.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-private-method-getter-usage.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-private-method-usage.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-private-names.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-field-identifier-initializer.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-field-identifier.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-private-getter-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-private-getter.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-private-method-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-private-method.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-private-setter-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-private-setter.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-privatename-identifier-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-privatename-identifier-initializer-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-privatename-identifier-initializer.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        (assertions):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-async-generator-method-privatename-identifier.js:
        (c.m.then.assertions):
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-async-method-privatename-identifier-alt.js:
        (c.m.then.assertions):
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-async-method-privatename-identifier.js:
        (c.m.then.assertions):
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-generator-method-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-method-privatename-identifier-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-method-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier-alt-by-classname.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier-by-classname.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier-initializer-alt.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier-initializer.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-rs-static-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-static-private-fields.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-static-private-methods-with-fields.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-static-private-methods.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-async-method-string-literal-names.js:
        (c.m.then):
        * test262/test/language/expressions/class/elements/same-line-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/same-line-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/same-line-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/same-line-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/same-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/same-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/same-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/same-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/wrapped-in-sc-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/wrapped-in-sc-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/expressions/class/elements/wrapped-in-sc-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/expressions/class/elements/wrapped-in-sc-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/expressions/optional-chaining/eval-optional-call.js: Added.
        * test262/test/language/statements/class/elements/after-same-line-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-computed-names.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-computed-symbol-names.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-grammar-privatename-identifier-semantics-stringvalue.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-literal-names-asi.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-literal-names.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-private-field-usage.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-private-method-getter-usage.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-private-method-usage.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-private-names.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-field-identifier-initializer.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-field-identifier.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-private-getter-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-private-getter.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-private-method-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-private-method.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-private-setter-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-private-setter.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-privatename-identifier-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-privatename-identifier-initializer-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-privatename-identifier-initializer.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        (C.get return):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-async-generator-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-async-method-privatename-identifier-alt.js:
        (C.async return):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-async-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-generator-method-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-method-privatename-identifier-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-method-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-alt-by-classname.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-by-classname.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-initializer-alt.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier-initializer.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-rs-static-privatename-identifier.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-static-private-fields.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-static-private-methods-with-fields.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-static-private-methods.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-gen-string-literal-names.js:
        (C.m.next.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-computed-names.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-computed-symbol-names.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-grammar-privatename-identifier-semantics-stringvalue.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-literal-names-asi.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-literal-names.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-private-field-usage.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-private-method-getter-usage.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-private-method-usage.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-private-names.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-field-identifier-initializer.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-field-identifier.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-private-getter-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-private-getter.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-private-method-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-private-method.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-private-setter-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-private-setter.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-privatename-identifier-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-privatename-identifier-initializer-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-privatename-identifier-initializer.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        (C.get return):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-async-generator-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-async-method-privatename-identifier-alt.js:
        (C.async return):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-async-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-generator-method-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-method-privatename-identifier-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-method-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-alt-by-classname.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-by-classname.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-initializer-alt.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier-initializer.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-rs-static-privatename-identifier.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-static-private-fields.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-static-private-methods-with-fields.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-static-private-methods.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-async-method-string-literal-names.js:
        (C.m.then):
        * test262/test/language/statements/class/elements/after-same-line-static-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-static-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-static-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-static-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-static-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-static-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/after-same-line-static-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/after-same-line-static-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/multiple-definitions-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/multiple-definitions-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/multiple-definitions-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/multiple-definitions-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/multiple-stacked-definitions-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/multiple-stacked-definitions-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/multiple-stacked-definitions-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/multiple-stacked-definitions-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/new-no-sc-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/new-no-sc-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/new-no-sc-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/new-no-sc-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/new-sc-line-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/new-sc-line-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/new-sc-line-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/new-sc-line-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/new-sc-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/new-sc-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/new-sc-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/new-sc-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/private-methods/prod-private-async-generator.js:
        (ctorPromise.then):
        * test262/test/language/statements/class/elements/private-methods/prod-private-async-method.js:
        (ctorPromise.then):
        * test262/test/language/statements/class/elements/regular-definitions-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/regular-definitions-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/regular-definitions-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/regular-definitions-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/same-line-async-gen-computed-names.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-computed-symbol-names.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-grammar-privatename-identifier-semantics-stringvalue.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-literal-names-asi.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-literal-names.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-private-field-usage.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-private-method-getter-usage.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-private-method-usage.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-private-names.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-field-identifier-initializer.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-field-identifier.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-private-getter-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-private-getter.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-private-method-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-private-method.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-private-setter-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-private-setter.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-privatename-identifier-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-privatename-identifier-initializer-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-privatename-identifier-initializer.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        (C.get return):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-async-generator-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-async-method-privatename-identifier-alt.js:
        (C.async return):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-async-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-generator-method-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-method-privatename-identifier-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-method-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier-alt-by-classname.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier-by-classname.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier-initializer-alt.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier-initializer.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-rs-static-privatename-identifier.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-static-private-fields.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-static-private-methods-with-fields.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-static-private-methods.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-gen-string-literal-names.js:
        (c.m.next.then):
        * test262/test/language/statements/class/elements/same-line-async-method-computed-names.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-computed-symbol-names.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-grammar-privatename-identifier-semantics-stringvalue.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-literal-names-asi.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-literal-names.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-private-field-usage.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-private-method-getter-usage.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-private-method-usage.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-private-names.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-field-identifier-initializer.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-field-identifier.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-private-getter-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-private-getter.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-private-method-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-private-method.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-private-setter-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-private-setter.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-privatename-identifier-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-privatename-identifier-initializer-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-privatename-identifier-initializer.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        (C.get return):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-async-generator-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-async-method-privatename-identifier-alt.js:
        (C.async return):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-async-method-privatename-identifier.js:
        (C):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-generator-method-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-method-privatename-identifier-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-method-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier-alt-by-classname.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier-by-classname.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier-initializer-alt-by-classname.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier-initializer-alt.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier-initializer.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-rs-static-privatename-identifier.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-static-private-fields.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-static-private-methods-with-fields.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-static-private-methods.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-async-method-string-literal-names.js:
        (c.m.then):
        * test262/test/language/statements/class/elements/same-line-gen-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/same-line-gen-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/same-line-gen-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/same-line-gen-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/same-line-method-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/same-line-method-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/same-line-method-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/same-line-method-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/wrapped-in-sc-rs-static-async-generator-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/wrapped-in-sc-rs-static-async-generator-method-privatename-identifier.js:
        * test262/test/language/statements/class/elements/wrapped-in-sc-rs-static-async-method-privatename-identifier-alt.js:
        * test262/test/language/statements/class/elements/wrapped-in-sc-rs-static-async-method-privatename-identifier.js:
        * test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-init-yield-expr.js:
        * test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-array-yield-expr.js:
        * test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-nested-obj-yield-expr.js:
        * test262/test262-Revision.txt:

2020-06-24  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, included copy of stress/llinttrue.js accidentally.
        https://bugs.webkit.org/show_bug.cgi?id=213442

        * stress/baselintjittrue.js: Removed.

2020-06-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] llintTrue / jitTrue can encounter native functions
        https://bugs.webkit.org/show_bug.cgi?id=213442
        <rdar://problem/64257914>

        Reviewed by Mark Lam.

        * stress/baselinejittrue.js: Added.
        (shouldBe):
        (jitCode1):
        (jitCode2):
        * stress/baselintjittrue.js: Added.
        (shouldBe):
        (llintCode1):
        (llintCode2):
        * stress/llinttrue-in-eval.js: Added.
        * stress/llinttrue.js: Added.
        (shouldBe):
        (llintCode1):
        (llintCode2):

2020-06-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Add DFG/FTL fast path for GetPrototypeOf based on OverridesGetPrototype flag
        https://bugs.webkit.org/show_bug.cgi?id=213191

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/object-get-prototype-of-object-rare.js: Added.
        * stress/dfg-object-prototype-of.js: Removed.
        * stress/dfg-reflect-get-prototype-of.js: Removed.
        * stress/ftl-object-get-prototype-of.js: Added.
        * stress/ftl-reflect-get-prototype-of.js: Added.

2020-06-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Clobberize misses `write(Heap)` report in some nodes
        https://bugs.webkit.org/show_bug.cgi?id=213525
        <rdar://problem/64642067>

        Reviewed by Mark Lam.

        * stress/missing-clobber-top-validation.js: Added.

2020-06-23  Mark Lam  <mark.lam@apple.com>

        Handle string overflow in DFG graph dump while validating AI.
        https://bugs.webkit.org/show_bug.cgi?id=213524
        <rdar://problem/64635620>

        Reviewed by Saam Barati.

        * stress/string-overflow-in-dfg-graph-dump.js: Added.

2020-06-21  Michael Catanzaro  <mcatanzaro@gnome.org>

        Attempt to unskip stress test array-buffer-view-watchpoint-can-be-fired-really-add-in-dfg.js on most architectures
        https://bugs.webkit.org/show_bug.cgi?id=213433

        Reviewed by Darin Adler.

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

2020-06-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Check Gigacage usage before launching VM
        https://bugs.webkit.org/show_bug.cgi?id=213410

        Reviewed by Mark Lam.

        * stress/exhaust-gigacage-and-allocate-vm.js: Added.
        (foo):

2020-06-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Attempt to reduce timeout failures on Apple Watch Series 3
        https://bugs.webkit.org/show_bug.cgi?id=213419

        Reviewed by Mark Lam.

        Look into timeout tests, and

        1. If the test is using too many iterations, decrease the count.
        2. If the test is still useful while iteration count is not so much, try attaching `slow!` to see the effect on the bot.

        * stress/memcpy-typed-loops.js:
        * stress/op_bitand.js:
        * stress/op_bitor.js:
        * stress/op_bitxor.js:
        * stress/op_mul-ConstVar.js:
        * stress/op_mul-VarConst.js:
        * stress/op_mul-VarVar.js:
        * stress/op_sub-ConstVar.js:
        * stress/op_sub-VarConst.js:
        * stress/op_sub-VarVar.js:
        * stress/set-iteration-oas.js:
        * stress/value-to-boolean.js:

2020-06-19  Mark Lam  <mark.lam@apple.com>

        Make $vm properties non-configurable, non-enumerable, and non-writable.
        https://bugs.webkit.org/show_bug.cgi?id=213395

        Reviewed by Saam Barati and Yusuke Suzuki.

        * stress/dollarVM-properties-should-not-be-enumerable.js: Added.

2020-06-18  Saam Barati  <sbarati@apple.com>

        sampling-profiler-wasm-name-section should run for more iterations
        https://bugs.webkit.org/show_bug.cgi?id=207576
        <rdar://problem/59431250>

        Reviewed by Mark Lam.

        This test was flaky because the sampling profiler is inherently probabilistic.
        We need to run it for more iterations to ensure it's not flaky.

        * stress/sampling-profiler-wasm-name-section.js:

2020-06-18  Ross Kirsling  <ross.kirsling@sony.com>

        [Intl] Enable RelativeTimeFormat and Locale by default
        https://bugs.webkit.org/show_bug.cgi?id=213324

        Reviewed by Yusuke Suzuki.

        * stress/intl-locale-as-intl-param.js:
        * stress/intl-locale.js:
        * stress/intl-relativetimeformat.js:
        * test262/config.yaml:
        Remove feature flags.

2020-06-18  Alexey Shvayka  <shvaikalesh@gmail.com>

        Promise built-in functions should be anonymous non-constructors
        https://bugs.webkit.org/show_bug.cgi?id=213317

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 20 test cases as passing.

2020-06-18  Alexey Shvayka  <shvaikalesh@gmail.com>

        TypedArray.prototype.set is incorrect with primitives
        https://bugs.webkit.org/show_bug.cgi?id=212730

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml: Mark 2 test cases as passing.

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

        Skip JSTests/stress/check-is-constant-non-cell-should-not-array-profile-during-osr-exit.js on memory limited devices
        https://bugs.webkit.org/show_bug.cgi?id=213321

        Reviewed by Mark Lam.

        It uses ~1GB of memory and jetsams on iOS devices.

        * stress/check-is-constant-non-cell-should-not-array-profile-during-osr-exit.js:

2020-06-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Freeze JSBigInt when setting it as a constant in AI
        https://bugs.webkit.org/show_bug.cgi?id=213310
        <rdar://problem/64450410>

        Reviewed by Mark Lam.

        * stress/bigint-constant-fold-to-numeric.js: Added.
        (foo):

2020-06-17  Alexey Shvayka  <shvaikalesh@gmail.com>

        Update test262 to commit 8d3dd2d1a0a5
        https://bugs.webkit.org/show_bug.cgi?id=213312

        Reviewed by Yusuke Suzuki.

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

2020-06-17  Keith Miller  <keith_miller@apple.com>

        $vm.haveABadTime/isHavingABadTime should work with non-globalObject parameters
        https://bugs.webkit.org/show_bug.cgi?id=213304

        Reviewed by Mark Lam.

        * stress/dollarVM-have-a-bad-time-no-params.js: Added.
        * stress/dollarVM-have-a-bad-time-works-for-non-global-object-params.js: Added.

2020-06-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Check NullSetterFunction under strict-mode context since structure / PropertyCondition are unaware of this
        https://bugs.webkit.org/show_bug.cgi?id=213266

        Reviewed by Mark Lam.

        * stress/null-setter-frame.js: Added.
        (shouldBe):
        (realm.runString.test):
        (object.get value):
        (i.catch):
        * stress/setter-throw-in-strict.js: Added.
        (foo):

2020-06-16  Mark Lam  <mark.lam@apple.com>

        Add SIGABRT handler for non OS(DARWIN) builds to the jsc shell with the -s option.
        https://bugs.webkit.org/show_bug.cgi?id=213200

        Reviewed by Michael Catanzaro.

        * stress/ensure-crash.js:
        - unskip this test since expected crashes should now be handled on non-darwin builds.

2020-06-15  Tadeu Zagallo  <tzagallo@apple.com>

        Bytecode liveness should be aware of checkpoints
        https://bugs.webkit.org/show_bug.cgi?id=213106
        <rdar://problem/63416838>

        Reviewed by Keith Miller.

        * stress/iterator-open-checkpoint-liveness.js: Added.
        (f):
        (next):
        (iterator):
        (catch):

2020-06-15  Alexey Shvayka  <shvaikalesh@gmail.com>

        Expand JSObject::defineOwnIndexedProperty() fast path for existing properties
        https://bugs.webkit.org/show_bug.cgi?id=213133

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/array-redefine-index-and-reverse.js: Added.
        * microbenchmarks/array-redefine-index.js: Added.
        * stress/define-own-indexed-property-fast-path.js: Added.

2020-06-15  Caio Lima  <ticaiolima@gmail.com>

        [ARMv7][MIPS][JSC] Skip check-is-constant-non-cell-should-not-array-profile-during-osr-exit.js
        https://bugs.webkit.org/show_bug.cgi?id=213208

        Unreviewed Gardening.

        * stress/check-is-constant-non-cell-should-not-array-profile-during-osr-exit.js:

2020-06-15  Keith Miller  <keith_miller@apple.com>

        CheckIsConstant should not use BadCache exit kind
        https://bugs.webkit.org/show_bug.cgi?id=213141

        Reviewed by Yusuke Suzuki.

        * stress/check-is-constant-non-cell-should-not-array-profile-during-osr-exit.js: Added.
        (foo.bar):

2020-06-15  Keith Miller  <keith_miller@apple.com>

        JIT thunks should work on arm64_32
        https://bugs.webkit.org/show_bug.cgi?id=213103

        Reviewed by Saam Barati.

        skip test on memory limited since it breaks on watch with JIT.

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

2020-06-15  Caitlin Potter  <caitp@igalia.com>

        [JSC] add machinery to disable JIT tiers when experimental features are enabled
        https://bugs.webkit.org/show_bug.cgi?id=213193

        Reviewed by Mark Lam.

        * stress/get-private-name.js:
        * stress/put-by-val-direct-addprivate.js:
        * stress/put-by-val-direct-putprivate.js:

2020-06-15  Alexey Shvayka  <shvaikalesh@gmail.com>

        super should not depend on __proto__
        https://bugs.webkit.org/show_bug.cgi?id=157972

        Reviewed by Saam Barati.

        * microbenchmarks/object-get-prototype-of-primitive.js: Added.
        * stress/class-syntax-derived-default-constructor.js:
        * stress/get-prototype-of.js: Added.
        * stress/super-property-access.js:
        * test262/expectations.yaml: Mark 4 test cases as passing.

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

        Add wasm regresion test for loop
        https://bugs.webkit.org/show_bug.cgi?id=213176

        Reviewed by Darin Adler.

        This patch adds one more regression test for r246134.

        * wasm/regress/regression-with-loop.js: Added.

2020-06-13  Devin Rousso  <drousso@apple.com>

        Make `errors` an own property of `AggregateError` instead of a prototype accessor
        https://bugs.webkit.org/show_bug.cgi?id=212677

        Reviewed by Yusuke Suzuki.

        * stress/AggregateError-own-property-errors.js: Added.

        * test262/expectations.yaml:
        Mark 9 tests as failing while waiting for test262 to update to match the spec.

2020-06-12  Robin Morisset  <rmorisset@apple.com>

        The ||= operator (and similar ones) should produce valid bytecode even if the right side is a static error
        https://bugs.webkit.org/show_bug.cgi?id=213154

        Reviewed by Devin Rousso.

        * stress/bytecode-for-rmw-with-invalid-right-side.js: Added.
        (catch):

2020-06-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] el(Greek) characters' upper-case conversion is locale-sensitive
        https://bugs.webkit.org/show_bug.cgi?id=213155
        <rdar://problem/55018467>

        Reviewed by Darin Adler.

        * stress/intl-el-case.js: Added.
        (shouldBe):

2020-06-12  Keith Miller  <keith_miller@apple.com>

        Tests expecting a crash should use a signal handler in the JSC CLI process
        https://bugs.webkit.org/show_bug.cgi?id=212479

        Reviewed by Yusuke Suzuki.

        * stress/ensure-crash.js:
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior-bad-transition-debug.js:
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior-bad-transition.js:
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior-debug.js: Removed.
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior.js:
        * stress/incorrect-put-could-generate-invalid-ic-involving-dictionary-flatten-debug.js:

2020-06-12  Alexey Shvayka  <shvaikalesh@gmail.com>

        AsyncGenerator should await "return" completions
        https://bugs.webkit.org/show_bug.cgi?id=212774

        Reviewed by Ross Kirsling.

        With this change, async generator stress tests now pass in Chrome and Firefox (tested manually).

        * stress/async-iteration-yield-star-interface.js:
        * stress/async-iteration-yield-star.js:
        * test262/expectations.yaml: Mark 8 test cases as passing.

2020-06-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add sampling-profiler code-origin lookup test
        https://bugs.webkit.org/show_bug.cgi?id=213108
        <rdar://problem/52044072>

        Reviewed by Saam Barati.

        This is fixed by r262920. This patch just adds a test additionally.
        We are keeping CallSiteIndex valid until corresponding JIT stub is destroyed.
        This fixes SamplingProfiler too since SamplingProfiler also collects CallSiteIndex and gets corresponding CodeOrigin.
        Since SamplingProfiler does this CallSiteIndex => CodeOrigin before running GC finalizer, validity of CallSiteIndex
        should be kept correctly.

        * stress/sampling-profiler-code-origin.js: Added.
        (let.oThrow.get f):
        (foo):
        (return.get f):
        (f):

2020-06-11  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Return DisposableCallSiteIndex when destroying GCAwareJITStubRoutineWithExceptionHandler
        https://bugs.webkit.org/show_bug.cgi?id=213069
        <rdar://problem/64205186>

        Reviewed by Saam Barati.

        * stress/dont-dispose-callsiteindex-while-executing.js: Added.
        (emptyFunction):
        (foo.bar.set catch):
        (foo.bar):
        (foo):

2020-06-11  Alexey Shvayka  <shvaikalesh@gmail.com>

        RegExp.prototype getters should throw on cross-realm access
        https://bugs.webkit.org/show_bug.cgi?id=213075

        Reviewed by Saam Barati.

        * test262/expectations.yaml: Mark 14 test cases as passing.

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

        REGRESSION(r260697): [Intl] "missing script" locales like zh-TW are no longer mapped
        https://bugs.webkit.org/show_bug.cgi?id=213007

        Reviewed by Darin Adler.

        * stress/intl-missing-script-locales.js: Added.

2020-06-10  Caitlin Potter  <caitp@igalia.com>

        [JSC] add stress test for op_get_private_name
        https://bugs.webkit.org/show_bug.cgi?id=213024

        Reviewed by Mark Lam.

        * stress/get-private-name.js: Added.

2020-06-09  Mark Lam  <mark.lam@apple.com>

        Stringifier::appendStringifiedValue() should not assume it is always safe to recurse.
        https://bugs.webkit.org/show_bug.cgi?id=213006
        <rdar://problem/64154840>

        Reviewed by Keith Miller.

        * stress/json-stringify-executing-in-reserved-zone.js: Added.

2020-06-09  Mark Lam  <mark.lam@apple.com>

        Disambiguate the OverridesGetPropertyNames structure flag
        https://bugs.webkit.org/show_bug.cgi?id=212909
        <rdar://problem/63823557>

        Reviewed by Saam Barati.

        * stress/unexpected-stack-overflow-below-JSObject-getPropertyNames.js: Added.

2020-06-08  Ross Kirsling  <ross.kirsling@sony.com>

        [Intl] Update tests to support ICU 67
        https://bugs.webkit.org/show_bug.cgi?id=212943

        Reviewed by Yusuke Suzuki.

        Our tests have been assuming ICU 60-64 results but WinCairo and PlayStation are now on ICU 67,
        which includes fixes for variant alphabetization and non-explicit "-true" values in locale strings.

        * stress/intl-collator.js:
        (explicitTrueBeforeICU67):
        (shouldBe.testCollator.Intl.Collator):
        * stress/intl-datetimeformat.js:
        * stress/intl-locale.js:
        * stress/intl-numberformat.js:
        * stress/intl-object.js:
        * stress/intl-pluralrules.js:
        * stress/intl-relativetimeformat.js:

2020-06-08  Keith Miller  <keith_miller@apple.com>

        Fix tests that time out on Series 4 Watch
        https://bugs.webkit.org/show_bug.cgi?id=212911

        Reviewed by Saam Barati.

        Simplify some logic about when to skip microbenchmarks to $jitTests.
        Also reduce iteration count for
        dont-range-based-iterate-vector-that-is-mutated.js

        Also, mark wasm tests as not run on watch.

        * microbenchmarks/bit-test-constant.js:
        * microbenchmarks/bit-test-nonconstant.js:
        * microbenchmarks/interpreter-wasm.js:
        * microbenchmarks/memcpy-typed-loop-large.js:
        * microbenchmarks/memcpy-typed-loop-small.js:
        * microbenchmarks/mul-immediate-sub.js:
        * stress/dont-range-based-iterate-vector-that-is-mutated.js:
        * stress/sampling-profiler-richards.js:

2020-06-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSON.stringify should throw stack overflow error
        https://bugs.webkit.org/show_bug.cgi?id=143511

        Reviewed by Ross Kirsling and Mark Lam.

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

2020-06-05  Saam Barati  <sbarati@apple.com>

        Audit safe to execute
        https://bugs.webkit.org/show_bug.cgi?id=207075
        <rdar://problem/59085094>

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/licm-dom-jit.js: Added.
        (assert):
        (foo):
        (bar):

2020-06-05  Saam Barati  <sbarati@apple.com>

        Try to reduce jetsams further on iOS devices running jsc stress tests
        https://bugs.webkit.org/show_bug.cgi?id=212786

        Reviewed by Mark Lam.

        * wasm/references/multitable.js:
        (string_appeared_here.vm.isMemoryLimited.tableInsanity):
        (string_appeared_here.vm.isMemoryLimited.):
        (string_appeared_here.vm.isMemoryLimited):
        (string_appeared_here.tableInsanity): Deleted.
        (I32Const.0.GetLocal.0.TableSet.1.End.End.WebAssembly.): Deleted.
        (I32Const.0.GetLocal.0.TableSet.1.End.End.WebAssembly): Deleted.

2020-06-05  Devin Rousso  <drousso@apple.com>

        Logical Assignment: perform NamedEvaluation of anonymous functions
        https://bugs.webkit.org/show_bug.cgi?id=212679

        Reviewed by Ross Kirsling.

        * stress/logical-assignment-operator-and.js:
        * stress/logical-assignment-operator-coalesce.js:
        * stress/logical-assignment-operator-or.js:

2020-06-05  Caitlin Potter  <caitp@igalia.com>

        [JSC] Add support for private class fields
        https://bugs.webkit.org/show_bug.cgi?id=206431

        Reviewed by Saam Barati.

        Expands upon the earlier public fields patch, adding a number of private
        field tests.

        * stress/class-fields-private-as-function.js: Added.
        * stress/class-fields-private-cached-bytecode.js: Added.
        * stress/class-fields-private-freeze-out-of-line.js: Added.
        * stress/class-fields-private-freeze.js: Added.
        * stress/class-fields-private-on-proxy.js: Added.
        * stress/class-fields-private-out-of-line.js: Added.
        * stress/class-fields-private-prevent-extensions-out-of-line.js: Added.
        * stress/class-fields-private-prevent-extensions.js: Added.
        * stress/class-fields-private-seal-out-of-line.js: Added.
        * stress/class-fields-private-seal.js: Added.
        * stress/class-fields-private-use-eval.js: Added.
        * stress/class-fields-stress-instance.js:
        * stress/optional-chaining-and-private-fields.js: Added.
        * stress/private-name-access-in-computed-property.js: Added.
        * stress/put-by-val-direct-addprivate.js: Added.
        * stress/put-by-val-direct-putprivate.js: Added.
        * test262/config.yaml:

2020-06-04  Paulo Matos  <pmatos@igalia.com>

        Skip microbenchmarks/interpreter-wasm.js on MIPS/ARM

        Unreviewed Gardening.

        There's no native wasm support on 32bits atm - skipping.

        * microbenchmarks/interpreter-wasm.js:

2020-06-04  Ross Kirsling  <ross.kirsling@sony.com>

        Intl classes should have meaningful @@toStringTag values
        https://bugs.webkit.org/show_bug.cgi?id=212769

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        Mark 16 test cases as passing.

        * stress/intl-collator.js:
        * stress/intl-datetimeformat.js:
        * stress/intl-numberformat.js:
        * stress/intl-pluralrules.js:
        Update stress tests.

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

        GetMethod isn't performed properly on iterators
        https://bugs.webkit.org/show_bug.cgi?id=212771

        Reviewed by Saam Barati.

        * test262/expectations.yaml: Mark 26 test cases as passing.

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

        Update test262 to commit 290ceba31fea
        https://bugs.webkit.org/show_bug.cgi?id=212752

        Reviewed by Ross Kirsling.

        * test262/config.yaml: Unskip tests fixed in r260990.
        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/*: Updated.
        * test262/test262-Revision.txt:

2020-06-03  Tadeu Zagallo  <tzagallo@apple.com>

        Disable B3 hoistLoopInvariantValues by default
        https://bugs.webkit.org/show_bug.cgi?id=212511
        <rdar://problem/63813245>

        Reviewed by Mark Lam.

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

2020-06-02  Saam Barati  <sbarati@apple.com>

        MultiDeleteByOffset should not always def
        https://bugs.webkit.org/show_bug.cgi?id=212621
        <rdar://problem/63824182>

        Reviewed by Yusuke Suzuki.

        * stress/multi-del-by-offset-doesnt-always-def-osr-entry.js: Added.
        (foo):
        * stress/multi-del-by-offset-doesnt-always-def.js: Added.
        (foo):
        (let.p.set undefined):

2020-06-01  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSBigInt::rightTrim can miss |this| pointer and leads to incorrect GC collection
        https://bugs.webkit.org/show_bug.cgi?id=212601

        Reviewed by Saam Barati.

        * stress/bigint-should-not-be-collected-while-creating.js: Added.
        (foo.let.increment.10000n.bar):
        (foo):

2020-06-01  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSValue::toThis should not throw exception
        https://bugs.webkit.org/show_bug.cgi?id=212595

        Reviewed by Mark Lam.

        * stress/number-proto.js: Added.
        (shouldBe):

2020-06-01  Caio Lima  <ticaiolima@gmail.com>

        JSTests/exceptionFuzz/earley-boyer.js fails with early exception thrown.
        https://bugs.webkit.org/show_bug.cgi?id=212569

        Reviewed by Mark Lam.

        This is a temporary fix to avoid flawky results when running
        `exceptionFuzz` tests. Right now, exception handler starts after
        function declarations, since they are hoisted. Since function
        declarations emit `new_func` bytecode, those bytecodes can
        throw an exception outside expected exception handler.
        Embedding them in a function avoid such hoisting to happen.

        * exceptionFuzz/3d-cube.js:
        * exceptionFuzz/date-format-xparb.js:
        * exceptionFuzz/earley-boyer.js:

2020-05-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] for-in should allocate new temporary register for base
        https://bugs.webkit.org/show_bug.cgi?id=212519
        <rdar://problem/63722044>

        Reviewed by Saam Barati.

        * microbenchmarks/has-own-property-for-in-loop-with-heap-variable.js: Added.
        (assert):
        (test1.count):
        (test1):
        * microbenchmarks/has-own-property-for-in-loop-with-this.js: Added.
        (assert):
        (test1.count):
        (test1):
        * stress/for-in-body-replace-enumerable.js: Added.
        (foo):
        * stress/for-in-enumerable-shadow.js: Added.
        (assert):
        (test1.count):
        (test1):
        * stress/for-in-enumerable-this-arrow.js: Added.
        (assert):
        (test1):

2020-05-29  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSBigInt allocation should be graceful for OOM
        https://bugs.webkit.org/show_bug.cgi?id=212512

        Reviewed by Mark Lam.

        * stress/bigint-can-throw-oom.js: Copied from JSTests/stress/get-function-realm-not-doing-recursion.js.
        (canThrow):
        (foo):
        (get foo):
        * stress/get-function-realm-not-doing-recursion.js:
        (canThrow):

2020-05-29  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Split some of JSC tests / reduce iteration count to make it not timed-out in Debug build
        https://bugs.webkit.org/show_bug.cgi?id=212557

        Reviewed by Mark Lam.

        * stress/should-not-emit-double-rep-for-bigint.js: Ensured that this iteration count can reproduce the original crash.
        * stress/tailCallForwardArguments.js: Split tests into 4 files.
        (let.bodyText): Deleted.
        (baz4): Deleted.
        (testFunc): Deleted.
        (baz5): Deleted.
        (baz6): Deleted.
        (arrayEq): Deleted.
        * stress/tailCallForwardArguments2.js: Added.
        (putFuncToPrivateName.createBuiltin):
        (createTailCallForwardingFuncWith):
        (putFuncToPrivateName):
        (let.bodyText):
        (baz4):
        * stress/tailCallForwardArguments3.js: Added.
        (putFuncToPrivateName.createBuiltin):
        (createTailCallForwardingFuncWith):
        (putFuncToPrivateName):
        (let.bodyText):
        (testFunc):
        (baz5):
        * stress/tailCallForwardArguments4.js: Added.
        (putFuncToPrivateName.createBuiltin):
        (createTailCallForwardingFuncWith):
        (let.bodyText):
        (putFuncToPrivateName):
        (baz6):
        (arrayEq):

2020-05-29  Saam Barati  <sbarati@apple.com>

        We need to properly model heap ranges of Delete in DFG/B3
        https://bugs.webkit.org/show_bug.cgi?id=212538
        <rdar://problem/63670964>

        Reviewed by Filip Pizlo.

        * stress/delete-inlining-should-model-aliasing-of-future-stores.js: Added.

2020-05-29  Saam Barati  <sbarati@apple.com>

        Skip a few more JSC tests when $memoryLimited
        https://bugs.webkit.org/show_bug.cgi?id=212552

        Reviewed by Mark Lam.

        * stress/call-varargs-inlining-should-not-clobber-previous-to-free-register.js:
        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:

2020-05-27  Keith Miller  <keith_miller@apple.com>

        for-of should check the iterable is a JSArray for FastArray in DFG iterator_open
        https://bugs.webkit.org/show_bug.cgi?id=212383

        Reviewed by Saam Barati.

        * stress/check-sub-class.js:
        * stress/for-of-iterator-open-fast-array-should-check-js-type.js: Added.
        (foo):

2020-05-27  Saam Barati  <sbarati@apple.com>

        hasOwnProperty inside structure property for-in loop should use an opcode like has_structure_property but for hasOwnProperty
        https://bugs.webkit.org/show_bug.cgi?id=212248

        Reviewed by Keith Miller.

        * microbenchmarks/has-own-property-for-in-loop.js: Added.
        * stress/has-own-property-structure-for-in-loop-correctness.js: Added.

2020-05-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [ macOS iOS ] REGRESSION(r261600?): imported/w3c/web-platform-tests/html/dom/reflection-embedded.html & imported/w3c/web-platform-tests/html/dom/reflection-forms.html are flaky failures
        https://bugs.webkit.org/show_bug.cgi?id=212430

        Reviewed by Saam Barati.

        * stress/is-constructor-should-be-correct-in-ai.js: Added.
        (shouldBe):
        (test):

2020-05-27  Saam Barati  <sbarati@apple.com>

        Limit memory used by wasm/references/multitable.js on memory limited devices
        https://bugs.webkit.org/show_bug.cgi?id=212437

        Reviewed by Keith Miller.

        wasm/references/multitable.js was using around ~700MB of memory.
        This looks like it's causing jetsams on some of our iOS test runners.
        This patch makes this test use less memory on memory limited devices.

        * wasm/assert.js:
        * wasm/references/multitable.js:
        (string_appeared_here.tableInsanity):

2020-05-27  Keith Miller  <keith_miller@apple.com>

        Unreviwed, catch expected exception in new test.

        * stress/for-in-in-structure-property-constant-virtual-register.js:

2020-05-27  Keith Miller  <keith_miller@apple.com>

        in_structure_property needs to handle constants on the RHS of the "in"
        https://bugs.webkit.org/show_bug.cgi?id=212399

        Reviewed by Saam Barati.

        * stress/for-in-in-structure-property-constant-virtual-register.js: Added.

2020-05-26  Mark Lam  <mark.lam@apple.com>

        JSC stress tests that require --useLLInt=0 should be skipped on --no-jit test runs.
        https://bugs.webkit.org/show_bug.cgi?id=212400

        Reviewed by Saam Barati.

        That's because using --useLLInt=0 and --useJIT=0 together is not a "coherent"
        (read "valid") configuration.  We should be able to do a --no-jit test run with
        the JSC_useJIT=0 environmental variable set.  Before this patch, the following
        tests will all fail.  This patch skips them.

        * stress/delete-property-poly-proto.js:
        * stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js:
        * stress/getter-setter-inlining-should-emit-movhint.js:
        * stress/merging-ic-variants-should-bail-if-structures-overlap.js:
        * stress/poly-proto-setter-adds-setter-in-middle.js:
        * stress/poly-proto-setter-changes-setter-2.js:
        * stress/poly-proto-setter-changes-setter.js:
        * stress/racy-gc-cleanup-of-identifier-after-mutator-stops-running.js:
        * stress/regress-192717.js:
        * stress/retry-cache-later.js:

2020-05-26  Alexey Shvayka  <shvaikalesh@gmail.com>

        IteratorClose should suppress GetMethod errors
        https://bugs.webkit.org/show_bug.cgi?id=212378

        Reviewed by Keith Miller.

        * stress/custom-iterators.js:
        * stress/iterator-return-abrupt-lookup-builtins.js: Added.
        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-05-23  Caio Lima  <ticaiolima@gmail.com>

        [bmalloc] Fix OOM errors on MIPS after r261667
        https://bugs.webkit.org/show_bug.cgi?id=212016

        Reviewed by Yusuke Suzuki.

        * stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js:
        * stress/big-int-mod-memory-stress.js:
        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:

2020-05-22  Alexey Shvayka  <shvaikalesh@gmail.com>

        Array.prototype.splice doesn't set "length" of returned object
        https://bugs.webkit.org/show_bug.cgi?id=212285

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-05-22  Saam Barati  <sbarati@apple.com>

        in_by_val inside structure property for-in loop should use an opcode like has_structure_property but for "in"
        https://bugs.webkit.org/show_bug.cgi?id=212239

        Reviewed by Tadeu Zagallo.

        * microbenchmarks/in-by-val-inside-for-in-loop.js: Added.
        (assert):
        (count):
        * stress/in-by-val-inside-for-in-loop.js: Added.
        (assert):
        (test1.count):
        (test1):
        (test2.count):
        (test2):
        (test3.count):
        (test3):
        (test4.count):
        (test4):
        (test5.count):
        (test5):
        (test6.count):
        (test6):
        (test7.count):
        (test7):
        (test8.count):
        (test8):

2020-05-22  Keith Miller  <keith_miller@apple.com>

        Checkpoint inlined call return handler needs an exception check when dispatching
        https://bugs.webkit.org/show_bug.cgi?id=212104

        Reviewed by Yusuke Suzuki.

        * stress/for-of-done-getter-osr-exits-inlined-to-value-getter-with-exception.js: Added.
        (let.d.get done):
        (let.d.get value):
        (foo):
        (catch):

2020-05-21  Alexey Shvayka  <shvaikalesh@gmail.com>

        Use @isUndefinedOrNull instead of abstract equality with null
        https://bugs.webkit.org/show_bug.cgi?id=210954

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml: Mark 16 test cases as passing.

2020-05-21  Alexey Shvayka  <shvaikalesh@gmail.com>

        Array.prototype.concat is incorrect with objects whose "length" exceeds 2 ** 32 - 1
        https://bugs.webkit.org/show_bug.cgi?id=212167

        Reviewed by Saam Barati.

        * stress/array-prototype-concat-of-long-spliced-arrays.js:
        * stress/array-prototype-concat-of-long-spliced-arrays2.js:
        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-05-19  Michael Catanzaro  <mcatanzaro@gnome.org>

        Fixups for r261689 "stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js failing on ppc64le and s390x"
        https://bugs.webkit.org/show_bug.cgi?id=211724
        <rdar://problem/63227393>

        Reviewed by Carlos Alberto Lopez Perez.

        Separately skip 32-bit and 64-bit PowerPC.

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

2020-05-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] BigInt peephole compare should speculate appropriately
        https://bugs.webkit.org/show_bug.cgi?id=212037
        <rdar://problem/63346966>

        Reviewed by Saam Barati.

        * stress/bigint-compare-peephole-branch.js: Added.

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

        OSR loop entry to iterator_next generic needs to CheckNotEmpty on m_next
        https://bugs.webkit.org/show_bug.cgi?id=212001

        Reviewed by Saam Barati.

        * stress/for-of-osr-loop-enter-active-next-differs-from-seen-modes.js: Added.
        (foo):

2020-05-18  Paulo Matos  <pmatos@igalia.com>

        Skip stress test array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js on MIPS

        Unreviewed Gardening.

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

2020-05-16  Keith Miller  <keith_miller@apple.com>

        [test262] Update to master for May
        https://bugs.webkit.org/show_bug.cgi?id=211985

        Reviewed by Mark Lam.

        * test262/expectations.yaml:
        * test262/harness/testIntl.js:
        * test262/latest-changes-summary.txt:
        * test262/test/annexB/built-ins/Array/from/iterator-method-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/String/prototype/match/custom-matcher-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/String/prototype/matchAll/custom-matcher-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/String/prototype/replace/custom-replacer-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/String/prototype/replaceAll/custom-replacer-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/String/prototype/search/custom-searcher-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/String/prototype/split/custom-splitter-emulates-undefined.js: Added.
        * test262/test/annexB/built-ins/TypedArrayConstructors/from/iterator-method-emulates-undefined.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/annexB/language/expressions/yield/star-iterable-throw-emulates-undefined-throws-when-called.js:
        * test262/test/built-ins/AsyncGeneratorFunction/proto-from-ctor-realm-prototype.js: Added.
        * test262/test/built-ins/Atomics/waitAsync/false-for-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/good-views.js:
        * test262/test/built-ins/Atomics/waitAsync/nan-for-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/negative-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-no-operation.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-add.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-and.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-compareExchange.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-exchange.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-or.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-store.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-sub.js:
        * test262/test/built-ins/Atomics/waitAsync/no-spurious-wakeup-on-xor.js:
        * test262/test/built-ins/Atomics/waitAsync/null-for-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/object-for-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/poisoned-object-for-timeout-throws-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/symbol-for-index-throws-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/symbol-for-timeout-throws-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/symbol-for-value-throws-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/true-for-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/undefined-for-timeout-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/undefined-index-defaults-to-zero-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/value-not-equal-agent.js:
        * test262/test/built-ins/Atomics/waitAsync/waiterlist-block-indexedposition-wake.js:
        * test262/test/built-ins/Atomics/waitAsync/was-woken-before-timeout.js:
        * test262/test/built-ins/BigInt/prototype/toString/a-z.js: Added.
        * test262/test/built-ins/Function/proto-from-ctor-realm-prototype.js: Added.
        * test262/test/built-ins/GeneratorFunction/proto-from-ctor-realm-prototype.js: Added.
        * test262/test/built-ins/NativeErrors/AggregateError/proto-from-ctor-realm.js:
        * test262/test/built-ins/Number/isSafeInteger/safe-integers.js:
        * test262/test/built-ins/Number/prototype/toString/a-z.js: Added.
        * test262/test/built-ins/Object/assign/strings-and-symbol-order-proxy.js: Added.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/built-ins/Object/defineProperties/proxy-no-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        * test262/test/built-ins/Object/freeze/proxy-no-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        * test262/test/built-ins/Object/getOwnPropertyDescriptors/proxy-no-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        * test262/test/built-ins/Object/isFrozen/proxy-no-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        * test262/test/built-ins/Object/isSealed/proxy-no-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        * test262/test/built-ins/Object/prototype/hasOwnProperty/S15.2.4.5_A10.js: Removed.
        * test262/test/built-ins/Object/prototype/hasOwnProperty/S15.2.4.5_A11.js: Removed.
        * test262/test/built-ins/Object/prototype/hasOwnProperty/S15.2.4.5_A8.js: Removed.
        * test262/test/built-ins/Object/prototype/hasOwnProperty/S15.2.4.5_A9.js: Removed.
        * test262/test/built-ins/Object/prototype/hasOwnProperty/length.js: Added.
        * test262/test/built-ins/Object/prototype/hasOwnProperty/topropertykey_before_toobject.js: Added.
        (coercibleKey1.get toString):
        (coercibleKey1.get valueOf):
        (coercibleKey2.Symbol.toPrimitive):
        * test262/test/built-ins/Object/prototype/toString/proxy-revoked-during-get-call.js: Added.
        * test262/test/built-ins/Object/seal/proxy-no-ownkeys-returned-keys-order.js: Added.
        (defineProperty):
        * test262/test/built-ins/Promise/all/invoke-resolve-get-once-no-calls.js:
        * test262/test/built-ins/Promise/all/resolve-not-callable-close.js: Added.
        (const.iter.return.return):
        (const.iter.Symbol.iterator):
        (Promise.all.iter.then):
        * test262/test/built-ins/Promise/allSettled/resolve-not-callable-close.js: Added.
        (const.iter.return.return):
        (const.iter.Symbol.iterator):
        (Promise.allSettled.iter.then):
        * test262/test/built-ins/Promise/any/resolve-not-callable-close.js: Added.
        (const.iter.return.return):
        (const.iter.Symbol.iterator):
        (Promise.any.iter.then):
        * test262/test/built-ins/Promise/race/resolve-not-callable-close.js: Added.
        (const.iter.return.return):
        (const.iter.Symbol.iterator):
        (Promise.race.iter.then):
        * 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/RelativeTimeFormat/prototype/format/pl-pl-style-long.js:
        (expected.of.Object.entries):
        * test262/test/intl402/RelativeTimeFormat/prototype/format/pl-pl-style-narrow.js:
        (expected.of.Object.entries):
        * test262/test/intl402/RelativeTimeFormat/prototype/format/pl-pl-style-short.js:
        (expected.of.Object.entries):
        * test262/test/intl402/RelativeTimeFormat/prototype/formatToParts/pl-pl-style-long.js:
        (expected.of.Object.entries):
        * test262/test/intl402/RelativeTimeFormat/prototype/formatToParts/pl-pl-style-narrow.js:
        (expected.of.Object.entries):
        * test262/test/intl402/RelativeTimeFormat/prototype/formatToParts/pl-pl-style-short.js:
        (expected.of.Object.entries):
        * test262/test/language/expressions/async-generator/named-yield-star-sync-return.js:
        (gen):
        * test262/test/language/expressions/async-generator/named-yield-star-sync-throw.js:
        (gen):
        * test262/test/language/expressions/async-generator/yield-star-sync-return.js:
        * test262/test/language/expressions/async-generator/yield-star-sync-throw.js:
        * test262/test/language/expressions/class/async-gen-method-static/yield-star-sync-return.js:
        (C):
        * test262/test/language/expressions/class/async-gen-method-static/yield-star-sync-throw.js:
        (C):
        * test262/test/language/expressions/class/async-gen-method/yield-star-sync-return.js:
        * test262/test/language/expressions/class/async-gen-method/yield-star-sync-throw.js:
        * test262/test/language/expressions/class/elements/async-gen-private-method-static/yield-star-sync-return.js:
        (C):
        * test262/test/language/expressions/class/elements/async-gen-private-method-static/yield-star-sync-throw.js:
        (C):
        * test262/test/language/expressions/class/elements/async-gen-private-method/yield-star-sync-return.js:
        * test262/test/language/expressions/class/elements/async-gen-private-method/yield-star-sync-throw.js:
        * test262/test/language/expressions/class/elements/field-declaration.js: Added.
        * test262/test/language/expressions/class/elements/fields-anonymous-function-length.js:
        * test262/test/language/expressions/class/elements/private-method-referenced-from-static-method.js:
        * test262/test/language/expressions/object/dstr/object-rest-proxy-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/language/expressions/object/method-definition/async-gen-yield-star-sync-return.js:
        * test262/test/language/expressions/object/method-definition/async-gen-yield-star-sync-throw.js:
        * test262/test/language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js: Added.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/language/identifiers/part-unicode-10.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-10.0.0.js:
        * test262/test/language/identifiers/part-unicode-11.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-11.0.0.js:
        * test262/test/language/identifiers/part-unicode-12.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-12.0.0.js:
        * test262/test/language/identifiers/part-unicode-13.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-13.0.0.js:
        * test262/test/language/identifiers/part-unicode-5.2.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-5.2.0.js:
        * test262/test/language/identifiers/part-unicode-6.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-6.0.0.js:
        * test262/test/language/identifiers/part-unicode-6.1.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-6.1.0.js:
        * test262/test/language/identifiers/part-unicode-7.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-7.0.0.js:
        * test262/test/language/identifiers/part-unicode-8.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-8.0.0.js:
        * test262/test/language/identifiers/part-unicode-9.0.0-escaped.js:
        * test262/test/language/identifiers/part-unicode-9.0.0.js:
        * test262/test/language/module-code/eval-rqstd-once.js:
        * test262/test/language/module-code/export-star-as-dflt.js: Added.
        * test262/test/language/module-code/export-star-as-dflt_FIXTURE.js: Added.
        * test262/test/language/statements/async-generator/yield-star-sync-return.js:
        * test262/test/language/statements/async-generator/yield-star-sync-throw.js:
        * test262/test/language/statements/class/async-gen-method-static/yield-star-sync-return.js:
        * test262/test/language/statements/class/async-gen-method-static/yield-star-sync-throw.js:
        * test262/test/language/statements/class/async-gen-method/yield-star-sync-return.js:
        * test262/test/language/statements/class/async-gen-method/yield-star-sync-throw.js:
        * test262/test/language/statements/class/elements/async-gen-private-method-static/yield-star-sync-return.js:
        * test262/test/language/statements/class/elements/async-gen-private-method-static/yield-star-sync-throw.js:
        * test262/test/language/statements/class/elements/async-gen-private-method/yield-star-sync-return.js:
        * test262/test/language/statements/class/elements/async-gen-private-method/yield-star-sync-throw.js:
        * test262/test/language/statements/class/elements/field-declaration.js: Added.
        (C):
        * test262/test/language/statements/class/elements/fields-anonymous-function-length.js:
        * test262/test/language/statements/class/elements/private-method-referenced-from-static-method.js:
        * test262/test/language/statements/class/subclass/bound-function.js: Removed.
        * test262/test/language/statements/class/subclass/class-definition-superclass-generator.js: Removed.
        * test262/test/language/statements/class/subclass/superclass-arrow-function.js: Added.
        (fn):
        (A):
        (C):
        * test262/test/language/statements/class/subclass/superclass-async-function.js: Added.
        (async fn):
        (A):
        (bound):
        (C):
        * test262/test/language/statements/class/subclass/superclass-async-generator-function.js: Added.
        (async fn):
        (A):
        (bound):
        (async bind):
        * test262/test/language/statements/class/subclass/superclass-bound-function.js: Added.
        (bound):
        * test262/test/language/statements/class/subclass/superclass-generator-function.js: Added.
        (fn):
        (A):
        (bound):
        (C):
        * test262/test262-Revision.txt:

2020-05-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make OutOfMemory error as instance of RangeError
        https://bugs.webkit.org/show_bug.cgi?id=211952

        Reviewed by Mark Lam.

        * ChakraCore/test/Error/outofmem.baseline-jsc:
        * es6/String.prototype_methods_String.prototype.padEnd.js:
        (TestMemoryLimits):
        * es6/String.prototype_methods_String.prototype.padStart.js:
        (TestMemoryLimits):
        * slowMicrobenchmarks/function-constructor-with-huge-strings.js:
        * stress/array-join-on-strings-need-overflow-checks.js:
        * stress/big-wasm-memory-grow-no-max.js:
        (test):
        * stress/big-wasm-memory-grow.js:
        (test):
        * stress/big-wasm-memory.js:
        (test):
        * stress/bigint-exponential-oom.js:
        (shouldThrow):
        * stress/bigint-int32-min-shift.js:
        (shouldThrow):
        * stress/check-symbol-description-oom.js:
        * stress/constructFunctionSkippingEvalEnabledCheck-should-throw-out-of-memory-error.js:
        * stress/intl-canonicalize-locale-list-error-oom.js:
        (shouldThrow):
        * stress/joined-strings-should-not-exceed-max-string-length.js:
        * stress/js-fixed-array-out-of-memory.js:
        (test):
        * stress/json-stringified-overflow-2.js:
        (catch):
        * stress/json-stringified-overflow.js:
        (catch):
        * stress/json-stringify-string-builder-overflow.js:
        * stress/missing-exception-check-in-JSValue-toWTFStringSlowCase.js:
        * stress/missing-exception-check-in-array-prototype-fastJoin.js:
        * stress/missing-exception-check-in-canonicalizeLocaleList.js:
        * stress/missing-exception-check-in-json-stringifier-gap.js:
        * stress/missing-exception-check-in-string-compare.js:
        * stress/missing-exception-check-in-string-greater-than-compare.js:
        * stress/missing-exception-check-in-string-greater-than-or-equal-compare.js:
        * stress/missing-exception-check-in-string-lastIndexOf.js:
        * stress/missing-exception-check-in-string-less-than-compare.js:
        * stress/missing-exception-check-in-string-less-than-or-equal-compare.js:
        * stress/missing-exception-check-in-string-toLower.js:
        * stress/missing-exception-check-in-string-toUpper.js:
        * stress/new_array_with_spread-should-cap-array-size-to-MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.js:
        * stress/out-of-memory-while-constructing-BytecodeGenerator.js:
        * stress/regexp-prototype-exec-on-too-long-rope.js:
        * stress/regexp-prototype-match-on-too-long-rope.js:
        * stress/regexp-prototype-test-on-too-long-rope.js:
        * stress/regress-169783.js:
        (doTest):
        * stress/regress-178385.js:
        * stress/regress-178386.js:
        * stress/regress-185888.js:
        * stress/regress-189132.js:
        * stress/regress-190187.js:
        * stress/regress-191563.js:
        * stress/scoped-arguments-table-should-be-tolerant-for-oom.js:
        (i.canThrow):
        * stress/string-16bit-repeat-overflow.js:
        * stress/string-overflow-createError-builder.js:
        * stress/string-overflow-createError-fit.js:
        * stress/string-overflow-createError.js:
        * stress/string-prototype-charCodeAt-on-too-long-rope.js:
        * stress/string-prototype-replace-should-throw-out-of-memory-error-when-using-too-much-memory.js:
        * stress/switch-string-oom.js:
        (testLowerTiers):
        (testFTL):
        * stress/test-exception-assert-in-ExceptionHelpers-createError.js:
        * stress/test-out-of-memory.js:
        * stress/typed-array-subarray-can-throw-oom-error.js:
        (get bar):
        * 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:

2020-05-15  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] getFunctionRealm should not use recursion
        https://bugs.webkit.org/show_bug.cgi?id=211965
        <rdar://problem/63268287>

        Reviewed by Saam Barati.

        * stress/get-function-realm-not-doing-recursion.js: Added.
        (canThrow):
        (const.emptyFunction):

2020-05-15  Paulo Matos  <pmatos@igalia.com>

        Skip tests in ARM and MIPS post r261667

        Unreviewed Gardening.
        These tests started failing on both ARMv7 and MIPS post r261667.
        Skipping for now until an investigation takes place.

        * stress/big-int-mod-memory-stress.js:
        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:

2020-05-14  Saam Barati  <sbarati@apple.com>

        GetByVal and PutByVal runtime operations shouldn't fall off a performance cliff when the property is an integer boxed as a double
        https://bugs.webkit.org/show_bug.cgi?id=211935

        Reviewed by Yusuke Suzuki and Mark Lam.

        * microbenchmarks/get-and-put-by-val-double-index-dont-fall-off-a-cliff.js: Added.
        (test):

2020-05-14  Devin Rousso  <drousso@apple.com>

        [ESNext] enable logical assignment operators by default
        https://bugs.webkit.org/show_bug.cgi?id=211921

        Reviewed by Yusuke Suzuki.

        * test262/config.yaml:
        * stress/logical-assignment-operator-and.js:
        * stress/logical-assignment-operator-coalesce.js:
        * stress/logical-assignment-operator-or.js:

2020-05-14  Keith Miller  <keith_miller@apple.com>

        Undecided Arrays shouldn't need to be OriginalArray to covert to GetArrayLength
        https://bugs.webkit.org/show_bug.cgi?id=211914

        Reviewed by Saam Barati.

        * stress/undecided-arrays-should-not-need-original-array-for-length.js: Added.
        (findFoo):
        (const.nonUndecidedFrequency.1000.SubArray):
        (i.i.some):

2020-05-14  Keith Miller  <keith_miller@apple.com>

        GetArrayLength should be "blessed" during Fixup phase in the DFG
        https://bugs.webkit.org/show_bug.cgi?id=211540

        Reviewed by Saam Barati.

        * stress/get-array-length-node-should-be-blessed-in-fixup.js: Added.
        (foo):

2020-05-13  Keith Miller  <keith_miller@apple.com>

        iteration bytecodes need to handle osr exiting from inlined getter frames
        https://bugs.webkit.org/show_bug.cgi?id=211873

        Reviewed by Saam Barati.

        * stress/for-of-done-getter-osr-exit-inlined.js: Added.
        (let.d.get done):
        (let.d.get value):
        * stress/for-of-next-getter-osr-exit-inlined.js: Added.
        (let.x.get next):
        (foo):
        * stress/for-of-value-getter-osr-exit-inlined.js: Added.
        (let.d.get value):
        (let.d.get done):

2020-05-14  Michael Catanzaro  <mcatanzaro@gnome.org>

        stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js failing on ppc64le and s390x
        https://bugs.webkit.org/show_bug.cgi?id=211724

        Reviewed by Carlos Alberto Lopez Perez.

        This test is broken on ppc64le and s390x, so skip it.

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

2020-05-13  Paulo Matos  <pmatos@igalia.com>

        Skip on MIPS test stress/has-own-property-name-cache-symbols-and-strings.js

        Unreviewed Gardening.
        Test started to fail unpredictably with segfault in bots -
        requires further investigation.

        * stress/has-own-property-name-cache-symbols-and-strings.js:

2020-05-13  Saam Barati  <sbarati@apple.com>

        MovHint can see an arguments object be MovHinted to a Tmp
        https://bugs.webkit.org/show_bug.cgi?id=211820
        <rdar://problem/62882158>

        Reviewed by Keith Miller.

        * stress/varargs-forwarding-can-see-arguments-mov-hint-to-for-of-tmp.js: Added.
        (let.iter.Symbol.iterator.return.next):
        (let.iter.Symbol.iterator):

2020-05-13  Alexey Shvayka  <shvaikalesh@gmail.com>

        Move @isConstructor checks from fast paths of Array.from and Array.of
        https://bugs.webkit.org/show_bug.cgi?id=211805

        Reviewed by Keith Miller.

        * microbenchmarks/array-from-arraylike.js: Added.
        * microbenchmarks/array-of.js: Added.
        * stress/new-promise-capabilities-requires-constructor.js:

2020-05-12  Alexey Shvayka  <shvaikalesh@gmail.com>

        Implement @isConstructor bytecode intrinsic and bytecode for that
        https://bugs.webkit.org/show_bug.cgi?id=144093

        Reviewed by Keith Miller.

        * microbenchmarks/is-constructor.js: Added.
        * stress/async-arrow-function-in-class-heritage.js:
        * stress/is-constructor.js:
        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-05-12  Robin Morisset  <rmorisset@apple.com>

        Exception check for OOM is a bit too late in JSBigInt::exponentiate.
        https://bugs.webkit.org/show_bug.cgi?id=211823

        Reviewed by Mark Lam.

        Just add one more case so that this test now catches this bug (the control-flow through JSBigInt::exponentiate is pretty convoluted).

        * stress/bigint-exponential-oom.js:
        (shouldThrow):

2020-05-12  Saam Barati  <sbarati@apple.com>

        handling of Check in VarargsForwardingPhase is too pessimistic
        https://bugs.webkit.org/show_bug.cgi?id=211810

        Reviewed by Keith Miller and Filip Pizlo.

        * microbenchmarks/forward-varargs-check-shouldnt-escape.js: Added.
        (g):
        (foo):

2020-05-12  Keith Miller  <keith_miller@apple.com>

        The bottom value set for m_value in iterator_next should be materialized after a done getter
        https://bugs.webkit.org/show_bug.cgi?id=211811

        Reviewed by Saam Barati.

        * stress/for-of-done-getter-materialize-bottom-late.js: Added.
        (let.d.get done):
        * stress/for-of-value-getter-contains-control-flow.js: Added.
        (let.d.get value):
        (let.d.get done):

2020-05-11  Paulo Matos  <pmatos@igalia.com>

        Skip on armv7/linux stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js
        https://bugs.webkit.org/show_bug.cgi?id=211721

        Unreviewed Gardening.
        This test is failing on our linux armv7 bots on a flaky basis and requires investigation.

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

2020-05-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        Array.prototype.concat fast path checks should not be observable
        https://bugs.webkit.org/show_bug.cgi?id=211643

        Reviewed by Ross Kirsling.

        While test262 has complete coverage for @@isConcatSpreadable getters in prototype
        chain, Proxy cases are covered by stress/array-concat-fast-spread-proxy.js and
        stress/array-concat-spread-proxy.js.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-05-08  Pablo Saavedra  <psaavedra@igalia.com>

        Unreviewed, reverting r261010.

        Test skipped for all ARM. no evidence of this affecting iOS

        Reverted changeset:

        "Skip on ARM and MIPS stress/array-buffer-view-watchpoint-can-
        be-fired-in-really-add-in-dfg.js added after r260990"
        https://bugs.webkit.org/show_bug.cgi?id=211304
        https://trac.webkit.org/changeset/261010

2020-05-07  Mark Lam  <mark.lam@apple.com>

        Fix broken exceptionFuzz tests.
        https://bugs.webkit.org/show_bug.cgi?id=211550

        Reviewed by Yusuke Suzuki.

        The tests should not be relying on setting a JSC Option at runtime because the
        options are already frozen by then.  Instead, we set the needed
        --useExceptionFuzz=true option from the command line.

        * exceptionFuzz/3d-cube.js:
        * exceptionFuzz/date-format-xparb.js:
        * exceptionFuzz/earley-boyer.js:

2020-05-06  Keith Miller  <keith_miller@apple.com>

        DFG ByVal nodes with ArrayModes should clobberTop until Fixup phase runs.
        https://bugs.webkit.org/show_bug.cgi?id=211531

        Reviewed by Yusuke Suzuki.

        * stress/for-of-get-by-val-marks-clobbers-exit-state.js: Added.
        (foo):
        * stress/put-by-val-correctly-clobbers-exit-state-when-misprofiling-index.js: Added.
        (let.foo.vm.createBuiltin):

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

        [ECMA-402] Implement Intl.Locale
        https://bugs.webkit.org/show_bug.cgi?id=209772

        Reviewed by Darin Adler and Saam Barati.

        * stress/intl-locale.js: Added.
        * stress/intl-locale-as-intl-param.js: Added.

        * test262/config.yaml:
        Enable Intl.Locale feature with flag.

        * test262/expectations.yaml:
        Mark known failures.
        None of these should be specific to Intl.Locale.

2020-05-05  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement BigInt.asIntN and BigInt.asUintN
        https://bugs.webkit.org/show_bug.cgi?id=181144

        Reviewed by Darin Adler.

        * stress/bigint-asintn.js: Added.
        (shouldBe):
        (shouldThrow):
        (BigInt.asIntN):
        * stress/bigint-asuintn.js: Added.
        (shouldBe):
        (shouldThrow):
        (BigInt.asUintN):
        * test262/expectations.yaml:

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

        [Intl] Alphabetize extension keys and correctly mark const methods
        https://bugs.webkit.org/show_bug.cgi?id=211359

        Reviewed by Darin Adler.

        * stress/intl-collator.js:
        * stress/intl-datetimeformat.js:
        Add tests.

2020-05-05  Keith Miller  <keith_miller@apple.com>

        iterator_open should remap the symbolIterator argument correctly when inlined.
        https://bugs.webkit.org/show_bug.cgi?id=211308
        <rdar://problem/62287877>

        Reviewed by Mark Lam.

        * stress/inlining-for-of-should-validate.js: Added.
        (bar):
        (foo):

2020-05-05  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reverting r261156.

        Break ARM64_32 build due to existing bug

        Reverted changeset:

        "[JSC] Implement BigInt.asIntN and BigInt.asUintN"
        https://bugs.webkit.org/show_bug.cgi?id=181144
        https://trac.webkit.org/changeset/261156

2020-05-05  Alexey Shvayka  <shvaikalesh@gmail.com>

        Object.prototype.toString is not spec-perfect
        https://bugs.webkit.org/show_bug.cgi?id=199138

        Reviewed by Darin Adler and Keith Miller.

        * ChakraCore.yaml: Skip a test as `global` now has @@toStringTag.
        * ChakraCore/test/LetConst/delete.baseline: Removed.
        * stress/internal-promise-constructor-not-confusing.js: Use @isPromise.
        * stress/object-get-own-property-symbols.js: Adjust test as `global` now has @@toStringTag.
        * test262/expectations.yaml: Mark 6 test cases as passing.

2020-05-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement BigInt.asIntN and BigInt.asUintN
        https://bugs.webkit.org/show_bug.cgi?id=181144

        Reviewed by Darin Adler.

        * stress/bigint-asintn.js: Added.
        (shouldBe):
        (shouldThrow):
        (BigInt.asIntN):
        * stress/bigint-asuintn.js: Added.
        (shouldBe):
        (shouldThrow):
        (BigInt.asUintN):
        * test262/expectations.yaml:

2020-05-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG NotCellUse is used without considering about BigInt32
        https://bugs.webkit.org/show_bug.cgi?id=211395

        Reviewed by Saam Barati.

        * stress/non-cell-nor-bigint-should-be-emitted-for-to-number-target-if-bigint-appears.js: Added.
        (shouldThrow):
        (test):
        (i.shouldThrow):
        * stress/non-cell-nor-bigint-should-reject-bigint.js: Added.
        (shouldBe):
        (test):
        * stress/should-not-emit-double-rep-for-bigint.js: Added.
        (foo):
        * stress/urshift-value-to-int32-should-reject-bigint.js: Added.
        (shouldThrow):
        (test):
        (i.shouldThrow):

2020-05-01  Yusuke Suzuki  <ysuzuki@apple.com>

        Fix stress/big-int-negate-jit.js
        https://bugs.webkit.org/show_bug.cgi?id=211321

        Reviewed by Saam Barati.

        This test is assuming that 100000 iteration of 2 negateBigInt calls makes negateBigInt DFG-compiled.
        But this is wrong if BigInt negation is fast enough. We made BigInt faster and now this test starts
        failing because running this iteration finishes earlier than DFG compilation finishes. We should use `useConcurrentJIT`
        to ensure this status.

        * stress/big-int-negate-jit.js:

2020-05-01  Yusuke Suzuki  <ysuzuki@apple.com>

        REGRESSION (r260990): 8 test262 unicode tests failing
        https://bugs.webkit.org/show_bug.cgi?id=211298

        Reviewed by Saam Barati.

        These unicode identifier tests are marked as PASS in r260990, but they are failing.
        Update test262/expectations.yaml by running `test262-runner --release --save`.

        * test262/expectations.yaml:

2020-05-01  Pablo Saavedra  <psaavedra@igalia.com>

        Skip on ARM and MIPS stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js added after r260990
        https://bugs.webkit.org/show_bug.cgi?id=211304

        Unreviewed Gardening.

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

2020-05-01  Saam Barati  <sbarati@apple.com>

        We can't cast toLength result to unsigned
        https://bugs.webkit.org/show_bug.cgi?id=211205
        <rdar://problem/62625562>

        Reviewed by Yusuke Suzuki.

        * stress/array-length-cant-get-casted-to-unsigned.js: Added.
        (assert):
        (testArrayPop):
        (testArrayPush):
        (testArrayReverse):
        (testArraySplice):
        (testArrayUnshift):
        (testArrayLastIndexOf):
        (shouldThrowTypeError):
        (testJSONStringify.get let):
        (testJSONStringify):
        * test262/expectations.yaml:

2020-04-30  Caio Lima  <ticaiolima@gmail.com>

        Investigate stress/v8-bitint32-inc.js failure on mips
        https://bugs.webkit.org/show_bug.cgi?id=210907

        Unreviewed test gardening.

        * stress/v8-bigint32-inc.js:

2020-04-29  Alexey Shvayka  <shvaikalesh@gmail.com>

        AsyncFromSyncIterator methods should not pass absent values
        https://bugs.webkit.org/show_bug.cgi?id=211147

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-04-29  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSStringJoiner is missing BigInt handling
        https://bugs.webkit.org/show_bug.cgi?id=211174

        Reviewed by Mark Lam.

        * stress/bigint-to-string-in-array.js: Added.
        (shouldBe):

2020-04-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] BigInt constructor should accept larger integers than safe-integers
        https://bugs.webkit.org/show_bug.cgi?id=210755

        Reviewed by Darin Adler.

        * stress/big-int-constructor.js:
        * stress/large-number-to-bigint.js: Added.
        (shouldBe):
        (shouldThrow):
        * test262/config.yaml:

2020-04-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] NumberConstructor should accept BigInt
        https://bugs.webkit.org/show_bug.cgi?id=210835

        Reviewed by Mark Lam.

        * stress/number-constructor-bigint-dfg.js: Added.
        (shouldBe):
        (convert):
        * stress/number-constructor-bigint.js: Added.
        (shouldBe):
        * test262/expectations.yaml:

2020-04-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Throw OutOfMemoryError instead of RangeError if BigInt is too big
        https://bugs.webkit.org/show_bug.cgi?id=211111

        Reviewed by Saam Barati.

        * stress/big-int-constructor-oom.js:
        (catch):
        * stress/big-int-left-shift-range-error.js:
        (assertThrowRangeError):
        * stress/big-int-out-of-memory-tests.js:
        (catch):
        * stress/bigint-exponential-oom.js: Added.
        (shouldThrow):
        * stress/bigint-int32-min-shift.js:
        (shouldThrow):

2020-04-27  Keith Miller  <keith_miller@apple.com>

        stress/generator-containing-for-of-on-map.js and stress/generator-containing-for-of-on-set.js timing out on debug JSC bot
        https://bugs.webkit.org/show_bug.cgi?id=211095

        Reviewed by Yusuke Suzuki.

        Let's try making these tests shorter. Eager compilation should still be interesting with the shorter iterations.

        * stress/generator-containing-for-of-on-map.js:
        * stress/generator-containing-for-of-on-set.js:

2020-04-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] >>> should call ToNumeric
        https://bugs.webkit.org/show_bug.cgi?id=211065

        Reviewed by Ross Kirsling.

        * stress/bigint-urshift.js: Added.
        (shouldBe):
        (shouldThrow):
        * test262/expectations.yaml:

2020-04-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add $vm.assertEnabled() to suppress Debug crash expected tests in release+assert build
        https://bugs.webkit.org/show_bug.cgi?id=211089

        Reviewed by Keith Miller.

        We have ASSERT which only fires when DOM object is wrongly implemented to catch wrong ones.
        We are using ASSERT in JSC side since we don't know all the DOM objects are correctly implemented.
        If it is not correctly implemented, in Release build, JSC is returning sub-optimal but right results.
        But in Debug build, we can catch the wrong ones, which allows us to fix the wrong things while avoiding
        catastrophic crashes in release build.

        However, the test is assuming that ASSERT is not enabled if it is not Debug build. Release & Debug builds
        work, but Release+Assert does not meet this assumption.

        So, skip this based on `$vm.assertEnabled()`.

        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior.js:
        (vm.assertEnabled.putter):
        (vm.assertEnabled):
        (putter): Deleted.
        (not_string.toString): Deleted.
        * stress/incorrect-put-could-generate-invalid-ic-involving-dictionary-flatten.js:
        (vm.assertEnabled):
        (not_string.toString): Deleted.

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

        Symbol should have [[Construct]] internal method
        https://bugs.webkit.org/show_bug.cgi?id=211050

        Reviewed by Yusuke Suzuki.

        * stress/is-constructor.js:
        * test262/expectations.yaml: Mark 2 test cases as passing.

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

        InternalFunction::createSubclassStructure should use newTarget's globalObject
        https://bugs.webkit.org/show_bug.cgi?id=202599

        Reviewed by Yusuke Suzuki.

        * stress/promise-proto-from-ctor-realm.js: Added.
        * test262/expectations.yaml: Mark 88 test cases as passing.

2020-04-26  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] ValueAdd, VaueSub, ValueMul, Inc, Dec should say SpecBigInt32 prediction based on ArithProfile
        https://bugs.webkit.org/show_bug.cgi?id=211038

        Reviewed by Filip Pizlo.

        * stress/bigint32-add-overflow.js: Added.
        (shouldBe):
        (add):
        (noInline):
        * stress/bigint32-dec-overflow.js: Added.
        (shouldBe):
        (dec):
        (noInline):
        * stress/bigint32-inc-overflow.js: Added.
        (shouldBe):
        (inc):
        (noInline):
        * stress/bigint32-mul-overflow.js: Added.
        (shouldBe):
        (mul):
        (noInline):
        * stress/bigint32-sub-overflow.js: Added.
        (shouldBe):
        (sub):
        (noInline):

2020-04-25  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Handle BigInt32 INT32_MIN shift amount
        https://bugs.webkit.org/show_bug.cgi?id=211030

        Reviewed by Darin Adler.

        * stress/bigint-int32-min-shift.js: Added.
        (shouldBe):
        (shouldThrow):

2020-04-25  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add fast path for BigInt32 left-shift
        https://bugs.webkit.org/show_bug.cgi?id=211029

        Reviewed by Saam Barati.

        * stress/bigint-left-shift-overflow.js: Added.
        (shouldBe):
        (leftShift):
        (noInline):
        * stress/bigint-right-shift-large.js: Added.
        (shouldBe):

2020-04-25  Paulo Matos  <pmatos@igalia.com>

        Skip stress/butterfly-zero-unused-butterfly-properties.js on MIPS
        https://bugs.webkit.org/show_bug.cgi?id=211016

        Unreviewed Gardening.

        * stress/butterfly-zero-unused-butterfly-properties.js:

2020-04-25  Ross Kirsling  <ross.kirsling@sony.com>

        [Intl] Locale validation/canonicalization should defer to ICU
        https://bugs.webkit.org/show_bug.cgi?id=210853

        Reviewed by Darin Adler.

        * stress/intl-collator.js:
        * stress/intl-datetimeformat.js:
        * stress/intl-numberformat.js:
        * stress/intl-object.js:
        * stress/intl-pluralrules.js:
        * stress/intl-relativetimeformat.js:
        Adjust tests, since one of the two fixes in r260151 no longer applies
        (and certain sensitivities apply to older ICU versions).

        * test262/expectations.yaml:
        Mark eight new passes, two new fails, and six changed failures.
        It is an unfortunate and baffling truth that the Intl tests of test262 are often not spec tests at all,
        but effectively ICU/CLDR regression tests. These are not carrots worth chasing.

2020-04-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Fix WASM Error classes and re-sync wpt/wasm/jsapi from upstream
        https://bugs.webkit.org/show_bug.cgi?id=210980

        Reviewed by Keith Miller.

        * wasm/modules/js-wasm-cycle.js:
        * wasm/modules/wasm-wasm-cycle.js:
        * wasm/stress/too-many-locals.js:

2020-04-24  Saam Barati  <sbarati@apple.com>

        Return BigInt32 whenever we can
        https://bugs.webkit.org/show_bug.cgi?id=210922

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/sunspider-sha1-big-int.js: Added.
        (hex_sha1):
        (b64_sha1):
        (str_sha1):
        (hex_hmac_sha1):
        (b64_hmac_sha1):
        (str_hmac_sha1):
        (bigIntToInt32):
        (sha1_vm_test):
        (core_sha1):
        (sha1_ft):
        (sha1_kt):
        (core_hmac_sha1):
        (safe_add):
        (rol):
        (str2binb):
        (binb2hex):
        (binb2b64):
        (run):

2020-04-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG compare should speculate BigInt well
        https://bugs.webkit.org/show_bug.cgi?id=210892

        Reviewed by Saam Barati.

        * stress/compare-bigint-with-number.js: Added.
        (shouldBe):
        (result):
        (lessThan):
        (lessThanEqual):
        (greaterThan):
        (greaterThanEqual):
        (equal):
        * stress/compare-bigint-with-string.js: Added.
        (shouldBe):
        (result):
        (lessThan):
        (lessThanEqual):
        (greaterThan):
        (greaterThanEqual):
        (equal):
        * stress/compare-bigint.js: Added.
        (shouldBe):
        (result):
        (lessThan):
        (lessThanEqual):
        (greaterThan):
        (greaterThanEqual):
        (equal):
        * stress/compare-bigint32.js: Added.
        (shouldBe):
        (result):
        (lessThan):
        (lessThanEqual):
        (greaterThan):
        (greaterThanEqual):
        (equal):
        * stress/compare-heap-bigint.js: Added.
        (shouldBe):
        (result):
        (lessThan):
        (lessThanEqual):
        (greaterThan):
        (greaterThanEqual):
        (equal):
        * stress/dfg-ai-fold-bigint.js: Added.
        (shouldBe):
        (allAreTrue):
        (allAreFalse):
        (lessThan):
        (lessThanFalse):
        (lessThanEqual):
        (lessThanEqualFalse):
        (greaterThan):
        (greaterThanFalse):
        (greaterThanEqual):
        (greaterThanEqualFalse):
        (equal):
        (equalFalse):

2020-04-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Proxy.revocable should not have [[Construct]] slot
        https://bugs.webkit.org/show_bug.cgi?id=210959

        Reviewed by Darin Adler.

        * stress/proxy-revoke.js:
        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-04-24  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG AI for some bitops + BigInt32 should be precise
        https://bugs.webkit.org/show_bug.cgi?id=210956

        Reviewed by Keith Miller.

        * stress/bigint-bitops.js: Added.
        (shouldBe):
        (test):

2020-04-24  Paulo Matos  <pmatos@igalia.com>

        Skip on ARM and MIPS stress/for-of-iterator-open* added at r260585
        https://bugs.webkit.org/show_bug.cgi?id=210961

        Unreviewed Gardening.

        * stress/for-of-iterator-open-osr-at-inlined-return-non-object.js:
        * stress/for-of-iterator-open-osr-at-iterator-set-local.js:
        * stress/for-of-iterator-open-return-non-object.js:

2020-04-23  Alexey Shvayka  <shvaikalesh@gmail.com>

        Remove revoked Proxy checks from ProxyCreate
        https://bugs.webkit.org/show_bug.cgi?id=210862

        Reviewed by Ross Kirsling.

        Removes expectations for 2 invalid ChakraCore tests.

        * ChakraCore.yaml: Mark 2 test cases as passing.
        * ChakraCore/test/es6/arraywithproxy.baseline: Removed.
        * ChakraCore/test/es6/proxytest9.baseline: Removed.
        * stress/proxy-revoke.js: Adjust test.
        * test262/expectations.yaml: Mark 12 test cases as passing.

2020-04-23  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed test262 gardening following r260591.

        * test262/expectations.yaml:
        Fix expectations to reflect ICU 64.

2020-04-23 Alexey Shvayka <shvaikalesh@gmail.com>

        Update test262 to commit 31dabb5618e2
        https://bugs.webkit.org/show_bug.cgi?id=210921

        Reviewed by Ross Kirsling.

        * test262/config.yaml: Skip "Atomics.waitAsync" feature.
        * test262/expectations.yaml:
        * test262/harness/*: Updated.
        * test262/latest-changes-summary.txt:
        * test262/test/*: Updated.
        * test262/test262-Revision.txt:

2020-04-23  Yusuke Suzuki  <ysuzuki@apple.com>

        Reduce iteration count and change how it invokes GC to reduce execution time of JSTests/stress/delete-property-dfg-inline.js
        https://bugs.webkit.org/show_bug.cgi?id=210933

        Reviewed by Keith Miller.

        This test takes 7~ seconds in Release build with default run. And it takes 1 mins in several variants of JSC tests, which is too long.
        By analyzing this, we found that this takes very long time,

            1. due to so frequent synchronous GC run
            2. due to large iteration count while function can get FTL with less counts

        While ensuring all functions gets FTL, we reduce iteration count and GC invocations to reduce the execution time, the default run gets 200ms.

        * stress/delete-property-dfg-inline.js:
        (noInline.blackbox.testSingleStructure):
        (noInline.testSingleStructure.testInlineSingleStructure):
        (noInline.testInlineSingleStructure.testExit):
        (noInline.testExit.testSingleStructureMiss):
        (noInline.testSingleStructureMiss.testSingleStructureMissStrict):
        (noInline.testSingleStructureMissStrict.testSingleStructureMissNonConfigurable):
        (noInline.testSingleStructureMissNonConfigurable.testSingleStructureEmpty):
        (noInline.testSingleStructureEmpty.testPolymorphic):
        (noInline.testPolymorphic.testPolyvariant):
        (noInline.testPolyvariant.testConstantFolding):
        (noInline.testConstantFolding.testObjectSinking):
        (noInline.testObjectSinking.testProxy):
        (noInline.testProxy.testTypedArray):
        (noInline.testTypedArray.testMissMixed):
        (noInline.testMissMixed.testMissNonMixed):
        (noInline.testMissNonMixed.testByVal.noInline.test):
        (noInline.testMissNonMixed.testByVal):
        (noInline.assert.assert_throws): Deleted.

2020-04-22  Keith Miller  <keith_miller@apple.com>

        Fix OSR exiting/iterator object checks in for-of bytecodes
        https://bugs.webkit.org/show_bug.cgi?id=210882

        Reviewed by Saam Barati.

        * stress/for-of-iterator-next-osr-at-inlined-return-non-object.js: Added.
        (vendNext):
        (test):
        (catch):
        * stress/for-of-iterator-next-osr-at-next-set-local.js: Added.
        (vendNext):
        (test):
        (catch):
        * stress/for-of-iterator-open-osr-at-inlined-return-non-object.js: Added.
        (vendIterator):
        (test):
        (catch):
        * stress/for-of-iterator-open-osr-at-iterator-set-local.js: Added.
        (vendIterator):
        (test):
        (catch):
        * stress/for-of-iterator-open-return-non-object.js: Added.
        (vendIterator):
        (test):
        (i.catch):
        * stress/test-for-of-cfg-simplication-exit-ok.js: Added.
        (z.__proto__):

2020-04-23  Paulo Matos  <pmatos@igalia.com>

        Skip stress/v8-bitint32-inc.js on mips
        https://bugs.webkit.org/show_bug.cgi?id=210906

        Unreviewed Gardening.

        * stress/v8-bigint32-inc.js:

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

        [JSC] branchIfBigInt32 can use BigInt32Mask and remove branchIfNumber filter
        https://bugs.webkit.org/show_bug.cgi?id=210870

        Reviewed by Saam Barati.

        * stress/anybigintuse-should-filter-number-correctly.js: Added.
        (shouldBe):
        (test):

2020-04-22  Saam Barati  <sbarati@apple.com>

        BigInt32 parsing should be precise
        https://bugs.webkit.org/show_bug.cgi?id=210869

        Reviewed by Robin Morisset.

        * stress/big-int-32-parsing-should-be-precise.js: Added.

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

        [JSC] JSBigInt inc operation does not produce right HeapBigInt zero
        https://bugs.webkit.org/show_bug.cgi?id=210860

        Reviewed by Mark Lam.

        * stress/bigint-zero-canonicalized.js: Added.
        (shouldBe):

2020-04-22  Saam Barati  <sbarati@apple.com>

        ValueBitNot is wrong in FTL with AnyBigIntUse
        https://bugs.webkit.org/show_bug.cgi?id=210846

        Reviewed by Yusuke Suzuki.

        * stress/big-int-value-bit-not-spec-any-big-int.js: Added.
        (assert):
        (foo):

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

        [JSC] AI results of BigInt32 Bitwise shift operation does not match to runtime results
        https://bugs.webkit.org/show_bug.cgi?id=210839

        Reviewed by Saam Barati.

        * stress/v8-bigint32-add.js: Added.
        (main):
        * stress/v8-bigint32-and.js: Added.
        (main):
        * stress/v8-bigint32-dec.js: Added.
        (main):
        * stress/v8-bigint32-div.js: Added.
        (main):
        * stress/v8-bigint32-inc.js: Added.
        (main):
        * stress/v8-bigint32-mod.js: Added.
        (main):
        * stress/v8-bigint32-mul.js: Added.
        (main):
        * stress/v8-bigint32-neg.js: Added.
        (main):
        * stress/v8-bigint32-not.js: Added.
        (main):
        * stress/v8-bigint32-or.js: Added.
        (main):
        * stress/v8-bigint32-sar.js: Added.
        (main):
        * stress/v8-bigint32-shl.js: Added.
        (main):
        * stress/v8-bigint32-sub.js: Added.
        (main):
        * stress/v8-bigint32-xor.js: Added.
        (main):

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

        [JSC] SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq should expect AnyBigIntUse
        https://bugs.webkit.org/show_bug.cgi?id=210832

        Reviewed by Mark Lam.

        * stress/heap-and-32-bigint-eq.js: Added.
        (shouldBe):
        * stress/heap-and-32-bigint-stricteq.js: Added.
        (shouldBe):

2020-04-21  Alexey Shvayka  <shvaikalesh@gmail.com>

        constructObjectFromPropertyDescriptor() is incorrect with partial descriptors
        https://bugs.webkit.org/show_bug.cgi?id=184629

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 4 test cases as passing.

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

        Move value-pow-ai-rule-should-box-the-same-way-as-the-runtime.js to JSTests/stress/
        https://bugs.webkit.org/show_bug.cgi?id=210805

        Reviewed by Saam Barati.

        r251408 accidentally puts value-pow-ai-rule-should-box-the-same-way-as-the-runtime.js in JSTests/ instead of JSTests/stress/.
        This patch fixes that.

        * stress/value-pow-ai-rule-should-box-the-same-way-as-the-runtime.js: Renamed from JSTests/value-pow-ai-rule-should-box-the-same-way-as-the-runtime.js.

2020-04-21  Paulo Matos  <pmatos@igalia.com>

        [ARMv7][EWS] stress/check-stack-overflow-before-value-profiling-arguments.js is failing
        https://bugs.webkit.org/show_bug.cgi?id=210720

        Unreviewed gardening.

        Skip test on arm since it is failing on EWS, causing significant delays.

        * stress/check-stack-overflow-before-value-profiling-arguments.js:

2020-04-21  Paulo Matos  <pmatos@igalia.com>

        Re-enable previously skipped mips tests
        https://bugs.webkit.org/show_bug.cgi?id=209964

        Reviewed by Mark Lam.

        Followup to r259454 - where we re-enabled a few stress tests for arm.

        * stress/JSArrayBufferView-byteOffset-is-racy-from-compiler-thread.js:
        * stress/dont-range-based-iterate-vector-that-is-mutated.js:
        * stress/ensure-code-block-is-not-precise-allocation.js:
        * stress/generator-cell-with-type.js:
        * stress/racy-slow-put-cloned-arguments-when-having-a-bad-time.js:
        * stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js:
        * stress/toctou-having-a-bad-time-new-array.js:

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

        [JSC] Import V8 BigInt tests generated by bigint-tester.py
        https://bugs.webkit.org/show_bug.cgi?id=210783

        Reviewed by Ross Kirsling.

        This patch adds BigInt tests generated by V8 bigint-tester.py, which is modified for JSC use.

        * stress/v8-bigint-add.js: Added.
        * stress/v8-bigint-and.js: Added.
        * stress/v8-bigint-dec.js: Added.
        * stress/v8-bigint-div.js: Added.
        * stress/v8-bigint-inc.js: Added.
        * stress/v8-bigint-mod.js: Added.
        * stress/v8-bigint-mul.js: Added.
        * stress/v8-bigint-neg.js: Added.
        * stress/v8-bigint-not.js: Added.
        * stress/v8-bigint-or.js: Added.
        * stress/v8-bigint-sar.js: Added.
        * stress/v8-bigint-shl.js: Added.
        * stress/v8-bigint-sub.js: Added.
        * stress/v8-bigint-xor.js: Added.

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

        [JSC] Skip test262 for non-safe-integer range BigIntConstructor
        https://bugs.webkit.org/show_bug.cgi?id=210749

        Reviewed by Keith Miller.

        We skip test262 test/built-ins/BigInt/constructor-integer.js for now. As it is shown in old test262 JSTests/test262/expectations.yaml,
        this test was failing before BigInt flag is enabled. And new BigInt patch changes error message while we are failing in the same way.
        While we implemented BigInt, this test is based on spec change introduced[1], and we are not implementing this. So we mark it skipped,
        as it is skipped before BigInt is enabled.

        [1]: https://github.com/tc39/proposal-bigint/pull/138

        * test262/config.yaml:

2020-04-20  Keith Miller  <keith_miller@apple.com>

        Unreviewed, revert accidental test changes.

        * microbenchmarks/for-of-iterate-array-entries.js:
        (foo):

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

        [32-bits] stress/for-of-array-different-globals.js is failing
        https://bugs.webkit.org/show_bug.cgi?id=210718

        Unreviewed gardening.

        Skip test for arm and mips, failing due to r260323

        * stress/for-of-array-different-globals.js:

2020-04-19  Ross Kirsling  <ross.kirsling@sony.com>

        [ECMA-402] Intl.RelativeTimeFormat missing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=209770

        Reviewed by Darin Adler.

        * stress/intl-relativetimeformat.js: Added.

        * test262/config.yaml:
        Enable Intl.RelativeTimeFormat feature with flag.

        * test262/expectations.yaml:
        Mark known failures.
        Test for locale validation is not specific to RelativeTimeFormat and should be investigated separately.
        Tests for Polish appear to be wrong and should be corrected in test262.

2020-04-18  Keith Miller  <keith_miller@apple.com>

        Unreviewed, mark test passing.

        * test262/expectations.yaml:

2020-04-18  Robin Morisset  <rmorisset@apple.com>

        Support an inlined representation in JSValue of small BigInts ("BigInt32")
        https://bugs.webkit.org/show_bug.cgi?id=206182

        Reviewed by Yusuke Suzuki.

        I improved several of the tests to give more informative error messages in the process of fixing them.

        More interestingly I had to modify "missing-exception-check-in-string-compare" because it relied on "s1 == s1" resolving ropes, and we now just return true.

        * stress/big-int-division.js:
        (testDiv):
        * stress/big-int-left-shift-wrapped-value.js:
        (assert.sameValue):
        * stress/big-int-logical-not.js:
        (assert):
        * stress/big-int-mod-jit.js:
        * stress/big-int-right-shift-general.js:
        (testRightShift):
        * stress/big-int-type-of-proven-type.js:
        (assert):
        * stress/compare-strict-eq-on-various-types.js:
        (testAllTypesCall):
        * stress/ftl-string-strict-equality.js:
        * stress/missing-exception-check-in-string-compare.js:

2020-04-18  Keith Miller  <keith_miller@apple.com>

        Redesign how we do for-of iteration for JSArrays
        https://bugs.webkit.org/show_bug.cgi?id=175454

        Reviewed by Filip Pizlo.

        * microbenchmarks/for-of-iterate-array-entries.js:
        (foo):
        * stress/custom-iterators.js:
        (catch):
        (iter.return):
        (iteratorInterfaceErrorTest):
        (iteratorInterfaceErrorTestReturn):
        (iteratorInterfaceBreakTestReturn):
        * stress/for-of-array-different-globals.js: Added.
        (foo):
        (array.Symbol.iterator.__proto__.next):
        * stress/for-of-array-mixed-values.js: Added.
        (test):
        * stress/for-of-no-direct-loop-back-edge-osr.js: Added.
        (osrIfFinalTier):
        (test):
        * stress/generator-containing-for-of-on-map.js: Added.
        (find):
        (i.let.v.of.find):
        * stress/generator-containing-for-of-on-set.js: Added.
        (find):
        (set add):
        * stress/osr-from-for-of-done-getter.js: Added.
        (i.let.iterable.next.return.get done):
        (i.let.iterable.next):
        (i.let.iterable.Symbol.iterator):
        (i.let.iterable.return):
        * stress/osr-from-for-of-value-getter.js: Added.
        (i.let.iterable.next.return.get value):
        (i.let.iterable.next):
        (i.let.iterable.Symbol.iterator):
        (i.let.iterable.return):
        * stress/throw-for-of-next-returns-non-object.js: Added.
        (i.let.iterable.next):
        (i.let.iterable.Symbol.iterator):
        (i.let.iterable.return):
        (i.catch):
        * stress/throw-from-done-getter-in-for-of-header.js: Added.
        (i.let.iterable.next):
        (i.let.iterable.get done):
        (i.let.iterable.Symbol.iterator):
        (i.let.iterable.return):
        (i.catch):
        * stress/throw-from-next-in-for-of-header.js: Added.
        (i.let.iterable.next):
        (i.let.iterable.Symbol.iterator):
        (i.let.iterable.return):
        (i.catch):
        * stress/throw-from-value-getter-in-for-of-header.js: Added.
        (i.let.iterable.next):
        (i.let.iterable.get value):
        (i.let.iterable.Symbol.iterator):
        (i.let.iterable.return):
        (i.catch):
        * stress/webidl-tokenizer-for-of.js: Added.
        (tokenise.attemptTokenMatch):
        (tokenise):
        (Tokeniser):
        (Tokeniser.prototype.probe):
        (Tokeniser.prototype.consume):
        (Tokeniser.prototype.unconsume):

2020-04-18  Alexey Shvayka  <shvaikalesh@gmail.com>

        RegExp.prototype[@@search] should use SameValue
        https://bugs.webkit.org/show_bug.cgi?id=173226

        Reviewed by Yusuke Suzuki.

        * stress/same-value-intrinsic.js: Added.
        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-04-17  Saam Barati  <sbarati@apple.com>

        GetTypedArrayByteOffset is broken on arm64e
        https://bugs.webkit.org/show_bug.cgi?id=210631

        Reviewed by Mark Lam.

        * stress/byte-offset-on-wasteful-neutered-arm64e.js: Added.
        (foo):
        (assert):
        (transferArrayBuffer.array.buffer):

2020-04-17  Devin Rousso  <drousso@apple.com>

        Rename NullishEq / NULLISHEQUAL to CoalesceEq / COALESCEEQUAL to match the spec
        https://bugs.webkit.org/show_bug.cgi?id=210663

        Reviewed by Ross Kirsling.

        * stress/logical-assignment-operator-coalesce.js: Renamed from stress/logical-assignment-operator-nullish.js.

2020-04-17  Devin Rousso  <drousso@apple.com>

        Implement Promise.any and AggregateError
        https://bugs.webkit.org/show_bug.cgi?id=202566

        Reviewed by Yusuke Suzuki.

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

2020-04-17  Paulo Matos  <pmatos@igalia.com>

        Reduce test iterations for stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js on mips
        https://bugs.webkit.org/show_bug.cgi?id=210641

        Reviewed by Yusuke Suzuki.

        Reduce test iteration count on mips for which the current value is too high.

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

2020-04-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Map/Set iterator creation functions should fail with BadType etc. before executing insertChecks
        https://bugs.webkit.org/show_bug.cgi?id=210649
        <rdar://problem/61925452>

        Reviewed by Mark Lam.

        * stress/map-iterator-check-before-fail.js: Added.
        (test):
        * stress/set-iterator-check-before-fail.js: Added.
        (set new):
        (set var):

2020-04-16  Ross Kirsling  <ross.kirsling@sony.com>

        REGRESSION(r259480): Two new failing i18n tests
        https://bugs.webkit.org/show_bug.cgi?id=210605

        Reviewed by Darin Adler.

        * stress/date-toLocaleString.js:
        Tests shouldn't rely on system default time zone.

2020-04-16  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reduce # of iteration since this test is timed out in slow devices
        https://bugs.webkit.org/show_bug.cgi?id=210023

        * stress/map-iteration-oas.js:

2020-04-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement JSMapIterator/JSSetIterator with JSInternalFieldObjectImpl
        https://bugs.webkit.org/show_bug.cgi?id=210023

        Reviewed by Keith Miller.

        * stress/map-iteration-oas.js: Added.
        (shouldBe):
        (test):
        * stress/map-iterator-creation-fail-dfg.js: Added.
        (shouldThrow):
        (test2):
        (test3):
        * stress/map-iterator-creation-fail.js: Added.
        (shouldThrow):
        (i.shouldThrow):
        (test2):
        (test3):
        * stress/set-iteration-oas.js: Added.
        (shouldBe):
        * stress/set-iterator-creation-fail-dfg.js: Added.
        (shouldThrow):
        (set shouldThrow):
        * stress/set-iterator-creation-fail.js: Added.
        (shouldThrow):
        (i.shouldThrow):
        (test2):
        (test3):

2020-04-15  Ross Kirsling  <ross.kirsling@sony.com>

        [ECMA-402] Extension values should default to true, canonicalize without "-true"
        https://bugs.webkit.org/show_bug.cgi?id=210457

        Reviewed by Yusuke Suzuki.

        * stress/intl-collator.js:
        * stress/intl-datetimeformat.js:
        * stress/intl-numberformat.js:
        * stress/intl-object.js:
        * stress/intl-pluralrules.js:
        Fix tests.

        * test262/expectations.yaml:
        Mark two test cases as passing.

2020-04-15  Justin Michaud  <justin@justinmichaud.com>

        stress/delete-property-dfg-inline.js.ftl-no-cjit-small-pool consistently timing out on debug JSC bot
        https://bugs.webkit.org/show_bug.cgi?id=210513

        Reviewed by Saam Barati.

        * stress/delete-property-dfg-inline.js:

2020-04-15  Ross Kirsling  <ross.kirsling@sony.com>

        [ECMA-402] Fix Intl.DateTimeFormat patterns and fields in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=209783

        Reviewed by Keith Miller.

        * stress/date-toLocaleString.js:
        * stress/intl-datetimeformat.js:
        Add tests and fix some existing ones.

        * test262/config.yaml:
        * test262/expectations.yaml:
        Mark eight test cases passing...but skip half of them due to outdated CLDR data in macOS system ICU.

2020-04-15  Devin Rousso  <drousso@apple.com>

        [ESNext] Implement logical assignment operators
        https://bugs.webkit.org/show_bug.cgi?id=209716

        Reviewed by Ross Kirsling.

        * stress/logical-assignment-operator-and.js: Added.
        * stress/logical-assignment-operator-nullish.js: Added.
        * stress/logical-assignment-operator-or.js: Added.

        * test262/config.yaml:
        * test262/expectations.yaml:
        Right now, test262 expects an early error to be thrown if the lhs is not simple, which does
        not match what we do with other read-modify assignment operators. This is likely to change
        in the future to match existing behavior (throw a `ReferenceError`) [1].

        [1]: <https://github.com/tc39/ecma262/issues/257#issuecomment-502878708>

2020-04-14  Saam Barati  <sbarati@apple.com>

        Skip all low executable memory wasm tests on arm64
        https://bugs.webkit.org/show_bug.cgi?id=210522

        Reviewed by Tadeu Zagallo.

        In my original JIT islands patch, I only skipped one of the "low executable
        memory" tests. But the others are also causing problems on the iOS JSC test
        runners, so let's just skip them all.

        * wasm/lowExecutableMemory/exports-oom.js:
        * wasm/lowExecutableMemory/imports-oom.js:

2020-04-14  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reduce iteration count and introduce early return to make typed-array-subarray-can-throw-oom-error.js execution time short while throwing an error
        https://bugs.webkit.org/show_bug.cgi?id=210507

        * stress/typed-array-subarray-can-throw-oom-error.js:
        (canThrow):
        (bar):
        (get bar):

2020-04-13  Michael Saboff  <msaboff@apple.com>

        [YARR] Allow for Unicode named capture group identifiers in non-Unicode regular expressions
        https://bugs.webkit.org/show_bug.cgi?id=210309

        Reviewed by Ross Kirsling.

        * stress/regexp-named-capture-groups.js: New test added.
        (shouldBe):
        (shouldThrowInvalidGroupSpecifierName):
        * test262/expectations.yaml: Updated for now failing tests.
        When test262 gets updated for this change, this can be reverted.

2020-04-12  Ross Kirsling  <ross.kirsling@sony.com>

        [ECMA-402] WebKit Intl does not allow calendar and numberingSystem options
        https://bugs.webkit.org/show_bug.cgi?id=209784

        Reviewed by Myles C. Maxfield.

        * stress/intl-datetimeformat.js:
        Fix two test cases for old behavior.

        * test262/expectations.yaml:
        Mark 16 test cases as passing.

2020-04-10  Ross Kirsling  <ross.kirsling@sony.com>

        [ECMA-402] Properly implement BigInt.prototype.toLocaleString
        https://bugs.webkit.org/show_bug.cgi?id=209782

        Reviewed by Darin Adler.

        * stress/bigint-toLocaleString.js: Added.
        * stress/intl-numberformat.js: Add test cases.
        * test262/expectations.yaml: Mark 10 test cases as passing.

2020-04-10  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed gardening for JSTests/stress. Remove skips that were forgotten in r259658.

        * stress/array-toLocaleString.js:
        * stress/date-toLocaleString.js:
        * stress/number-toLocaleString.js:
        * stress/string-localeCompare.js:
        * stress/string-toLocaleLowerCase.js:
        * stress/string-toLocaleUpperCase.js:

2020-04-10  Devin Rousso  <drousso@apple.com>

        The rhs in `ReadModifyResolveNode` should be evaluated before throwing an exception if the lhs is read-only
        https://bugs.webkit.org/show_bug.cgi?id=210317

        Reviewed by Ross Kirsling.

        * stress/const-read-modify-assignment-eval-rhs-before-exception.js: Added.

2020-04-09  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] ModuleEnvironment do not have JSGlobalLexicalEnvironment as its upper scope
        https://bugs.webkit.org/show_bug.cgi?id=193347

        Reviewed by Tadeu Zagallo.

        * stress/global-lexical-environment-access-from-module.js: Added.
        (shouldBe):
        (import.string_appeared_here.then):
        * stress/resources/global-lexical-environment-access-from-module-child.js: Added.
        (export.read):
        (export.write):

2020-04-09  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, skip JSTests/stress/intl-canonicalize-locale-list-error-oom.js if memoryLimited
        <rdar://problem/61533598>

        * stress/intl-canonicalize-locale-list-error-oom.js:

2020-04-09  Alexey Shvayka  <shvaikalesh@gmail.com>

        ProxyObject::defineOwnProperty() should conditionally throw on falsy trap result
        https://bugs.webkit.org/show_bug.cgi?id=210267

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-04-09  Saam Barati  <sbarati@apple.com>

        We can still cache delete in strict mode as long as the property is not "non-configurable"
        https://bugs.webkit.org/show_bug.cgi?id=210148

        Reviewed by Tadeu Zagallo.

        * microbenchmarks/delete-cache-strict-mode.js: Added.
        (assert):
        (doDel):
        (doDelByVal):

2020-04-09  Alexey Shvayka  <shvaikalesh@gmail.com>

        getOwnPropertyDescriptor() is incorrect with Proxy of exotic object
        https://bugs.webkit.org/show_bug.cgi?id=200560

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml: Mark 14 test cases as passing.

2020-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] MultiDeleteByOffset should tell correct result AbstractValue in AI
        https://bugs.webkit.org/show_bug.cgi?id=210175
        <rdar://problem/61433817>

        Reviewed by Saam Barati.

        * stress/multi-delete-by-offset-ai-result.js: Added.
        (foo):

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

        [JSC] Collect-continuously thread should take m_collectContinuouslyLock while it is waking up concurrent collector thread
        https://bugs.webkit.org/show_bug.cgi?id=210163

        Reviewed by Saam Barati.

        * stress/collect-continuously-should-not-wake-concurrent-collector-after-prevent-collection-is-called.js: Added.
        (let.theCode):

2020-04-07  Saam Barati  <sbarati@apple.com>

        Delete ICs can't cache dictionaries
        https://bugs.webkit.org/show_bug.cgi?id=210147
        <rdar://problem/61382405>

        Reviewed by Tadeu Zagallo.

        * stress/dont-cache-delete-ic-on-dictionary-2.js: Added.
        (assert):
        (makeDictionary):
        (foo):
        * stress/dont-cache-delete-ic-on-dictionary.js: Added.
        (assert):
        (foo):

2020-04-07  Tadeu Zagallo  <tzagallo@apple.com>

        Not using strict mode within ClassDeclaration statement
        https://bugs.webkit.org/show_bug.cgi?id=205578
        <rdar://problem/58194589>

        Reviewed by Yusuke Suzuki.

        * stress/inline-strict-delete.js: Added.
        (assert):
        (bar):
        (foo):
        * stress/superclass-expression-strictness.js: Added.
        (f.try.c):
        (f):

2020-04-07  Alexey Shvayka  <shvaikalesh@gmail.com>

        test262/Runner.pm ignores "async" flag
        https://bugs.webkit.org/show_bug.cgi?id=210127

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 56 test cases as failing.

2020-04-07  Ross Kirsling  <ross.kirsling@sony.com>

        Update JSTests to assume ICU 60+
        https://bugs.webkit.org/show_bug.cgi?id=210085

        Reviewed by Yusuke Suzuki.

        * stress/intl-collator.js:
        * stress/intl-constructors-with-proxy.js:
        * stress/intl-datetimeformat.js:
        * stress/intl-default-locale.js:
        * stress/intl-numberformat-format-to-parts.js:
        * stress/intl-numberformat.js: Ensure a test case doesn't depend on behavior changed in ICU 64.
        * stress/intl-object.js:
        * stress/intl-pluralrules.js: Correct two invalid test cases.
        * test262/config.yaml:
        Remove skips.

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

        [JSC] ScopedArgumentsTable should handle OOM in tolerant manner
        https://bugs.webkit.org/show_bug.cgi?id=210126

        Reviewed by Mark Lam.

        * stress/scoped-arguments-table-should-be-tolerant-for-oom.js: Added.
        (canThrow):
        (bar):
        (get bar):
        (foo):
        (i.canThrow):

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

        [JSC] Inlined IC should get right JSGlobalObject
        https://bugs.webkit.org/show_bug.cgi?id=210092

        Reviewed by Tadeu Zagallo.

        * stress/getter-setter-globalobject-in-ic.js: Added.
        (shouldBe):
        (valueFunc):
        (accessorFunc):
        (valueTest):
        (accessorTest):

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

        [JSC] $.evalScript should check exception when accessing "global"
        https://bugs.webkit.org/show_bug.cgi?id=210114
        <rdar://problem/61388482>

        Reviewed by Keith Miller.

        * stress/eval-script-global-access-exception-check.js: Added.
        (shouldThrow):

2020-04-06  Rick Waldron  <waldron.rick@gmail.com> and Alexey Shvayka  <shvaikalesh@gmail.com>

        Remove unnecessary Test262 harness file and implement $262.IsHTMLDDA
        https://bugs.webkit.org/show_bug.cgi?id=187526

        Reviewed by Darin Adler.

        * stress/optional-chaining.js: Adjust test for callable masquerader.

2020-04-06  Justin Michaud  <justin_michaud@apple.com>

        Allow deleteById to be cached in the DFG
        https://bugs.webkit.org/show_bug.cgi?id=208664

        Reviewed by Saam Barati.

        * microbenchmarks/delete-property-allocation-sinking.js: Added.
        (assert):
        (noInline.assert.blackbox):
        (noInline.blackbox.doAlloc1):
        (noInline.doAlloc1):
        * microbenchmarks/polyvariant-delete-property.js: Added.
        (assert):
        (blackbox):
        (noInline.blackbox.polyvariant):
        (doAlloc1):
        (noInline.doAlloc1.doAlloc2):
        (noInline.doAlloc2):
        * stress/delete-property-dfg-inline.js: Added.
        (assert):
        (noInline.assert.assert_throws):
        (noInline.assert_throws.blackbox):
        (noInline.blackbox.testSingleStructure.doAlloc1):
        (noInline.blackbox.testSingleStructure):
        (noInline.testSingleStructure.testInlineSingleStructure.doDelete2):
        (noInline.testSingleStructure.testInlineSingleStructure.doAlloc2):
        (noInline.testSingleStructure.testInlineSingleStructure):
        (noInline.testInlineSingleStructure.testExit.doDelete3):
        (noInline.testInlineSingleStructure.testExit):
        (noInline.testExit.testSingleStructureMiss.doAlloc4):
        (noInline.testExit.testSingleStructureMiss):
        (noInline.testSingleStructureMiss.testSingleStructureMissStrict.string_appeared_here.doAlloc5):
        (noInline.testSingleStructureMiss.testSingleStructureMissStrict):
        (noInline.testSingleStructureMissStrict.testSingleStructureMissNonConfigurable.doAlloc6):
        (noInline.testSingleStructureMissStrict.testSingleStructureMissNonConfigurable):
        (noInline.testSingleStructureMissNonConfigurable.testSingleStructureEmpty.doAlloc7):
        (noInline.testSingleStructureMissNonConfigurable.testSingleStructureEmpty):
        (noInline.testSingleStructureEmpty.testPolymorphic.doDelete8):
        (noInline.testSingleStructureEmpty.testPolymorphic):
        (noInline.testPolymorphic.testPolyvariant.doDelete9):
        (noInline.testPolymorphic.testPolyvariant.polyvariant):
        (noInline.testPolymorphic.testPolyvariant):
        (noInline.testPolyvariant.testConstantFolding.doDelete10):
        (noInline.testPolyvariant.testConstantFolding):
        (noInline.testConstantFolding.testObjectSinking.doAlloc11):
        (noInline.testConstantFolding.testObjectSinking):
        (noInline.testObjectSinking.testProxy.doAlloc12):
        (noInline.testObjectSinking.testProxy.noInline.doDelete12):
        (noInline.testObjectSinking.testProxy):
        (noInline.testProxy.testTypedArray.doDelete12):
        (noInline.testProxy.testTypedArray):
        (noInline.testTypedArray.testMissMixed.doDelete13):
        (noInline.testTypedArray.testMissMixed):
        (noInline.testMissMixed.testMissNonMixed.doDelete14):
        (noInline.testMissMixed.testMissNonMixed):
        (noInline.testMissNonMixed.testByVal.doDelete15):
        (noInline.testMissNonMixed.testByVal):

2020-04-06  Saam Barati  <sbarati@apple.com>

        Implement 1GB of executable memory on arm64
        https://bugs.webkit.org/show_bug.cgi?id=208490
        <rdar://problem/60797127>

        Reviewed by Keith Miller.

        Run JetStream2 wasm tests.

        * wasm.yaml:
        * wasm/lowExecutableMemory/executable-memory-oom.js:

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

        [JSC] Since ArrayBufferViewWatchpointAdaptor::add can fire watchpoints, DFG::Plan should check validity of CodeBlock after executing reallyAdd
        https://bugs.webkit.org/show_bug.cgi?id=210055
        <rdar://problem/61331962>

        Reviewed by Keith Miller.

        * stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js: Added.
        (xxx.foo):

2020-04-05  Ross Kirsling  <ross.kirsling@sony.com>

        JSC shell shouldn't treat NUL as a terminator when printing a JS string
        https://bugs.webkit.org/show_bug.cgi?id=210037

        Reviewed by Darin Adler.

        * .gitattributes:
        * ChakraCore.yaml:
        * ChakraCore/test/es5/hasItem.baseline-jsc: Added.
        Update baseline and mark it diffable (as plaintext) in spite of containing \0.

2020-04-05  Alexey Shvayka  <shvaikalesh@gmail.com>

        Octal escapes should be max 3 digits and syntax errors in Unicode patterns
        https://bugs.webkit.org/show_bug.cgi?id=167067

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-04-04  Alexey Shvayka  <shvaikalesh@gmail.com>

        '\u' should throw an early SyntaxError exception, but instead evaluates to 'u'
        https://bugs.webkit.org/show_bug.cgi?id=198790

        Reviewed by Yusuke Suzuki.

        * mozilla/ecma/Array/15.4.5.1-1.js:
        * mozilla/ecma/LexicalConventions/7.7.4.js:
        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-04-04  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, skip stress/typed-array-subarray-can-throw-oom-error.js on memory-limited archs, and mark it slow
        https://bugs.webkit.org/show_bug.cgi?id=209974

        * stress/typed-array-subarray-can-throw-oom-error.js:

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

        Gardening: skip test for ARMv7 and MIPS to green the bots until the failure can be investigated.
        https://bugs.webkit.org/show_bug.cgi?id=210003

        Not reviewed.

        * stress/typed-array-subarray-can-throw-oom-error.js:

2020-04-03  Alexey Shvayka  <shvaikalesh@gmail.com>

        Update test262 to commit 62b8fce38971
        https://bugs.webkit.org/show_bug.cgi?id=209979

        Reviewed by Ross Kirsling.

        * .gitattributes: Added.
        * test262/config.yaml: Skip "logical-assignment-operators" and "Promise.any" features.
        * test262/expectations.yaml:
        * test262/harness/*: Updated.
        * test262/latest-changes-summary.txt:
        * test262/test/*: Updated.
        * test262/test262-Revision.txt:

2020-04-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] canonicalizeLocaleList should gracefully throw OOM error if input + error message is too large
        https://bugs.webkit.org/show_bug.cgi?id=209971
        <rdar://problem/61258621>

        Reviewed by Mark Lam.

        * stress/intl-canonicalize-locale-list-error-oom.js: Added.
        (shouldThrow):

2020-04-03  Ross Kirsling  <ross.kirsling@sony.com>

        Move Intl tests from LayoutTests to JSTests
        https://bugs.webkit.org/show_bug.cgi?id=209922

        Reviewed by Yusuke Suzuki.

        Intl doesn't depend on WebCore, so these tests shouldn't be layout tests.
        (They do, however, require one method to be added to $vm.)

        Since LayoutTests/js has its own test harness, I've also migrated each test case to use simpler assertions.

        * stress/array-to-locale-string.js: Removed -- subsumed by the following test.
        * stress/array-toLocaleString.js: Added.
        * stress/date-toLocaleString.js: Added.
        * stress/intl-collator.js: Added.
        * stress/intl-datetimeformat.js: Added.
        * stress/intl-default-locale.js: Added.
        * stress/intl-numberformat-format-to-parts.js: Added.
        * stress/intl-numberformat.js: Added.
        * stress/intl-object.js: Added.
        * stress/intl-pluralrules.js: Added.
        * stress/number-toLocaleString.js: Added.
        * stress/string-localeCompare.js: Added.
        * stress/string-toLocaleLowerCase.js: Added.
        * stress/string-toLocaleUpperCase.js: Added.

2020-04-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] TypedArray#subarray should throw OOM error gracefully
        https://bugs.webkit.org/show_bug.cgi?id=209974
        <rdar://problem/61253901>

        Reviewed by Mark Lam.

        * stress/typed-array-subarray-can-throw-oom-error.js: Added.
        (foo):
        (canThrow):
        (bar):
        (get bar):

2020-04-03  Paulo Matos  <pmatos@igalia.com>

        Re-enable previously skipped arm tests
        https://bugs.webkit.org/show_bug.cgi?id=209958

        Reviewed by Adrian Perez de Castro.

        In the past year, some arm tests were skipped to keep the bots green.
        All known issues affecting these tests were fixed and now can be unskipped.

        * stress/JSArrayBufferView-byteOffset-is-racy-from-compiler-thread.js:
        * stress/dont-range-based-iterate-vector-that-is-mutated.js:
        * stress/generator-cell-with-type.js:
        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:
        * stress/racy-slow-put-cloned-arguments-when-having-a-bad-time.js:
        * stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js:
        * stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js:
        * stress/toctou-having-a-bad-time-new-array.js:

2020-04-03  Paulo Matos  <pmatos@igalia.com>

        stress/ftl-gettypedarrayoffset-wasteful.js times out on arm/linux
        https://bugs.webkit.org/show_bug.cgi?id=198754

        Reviewed by Žan Doberšek.

        Unskip test.

        * stress/ftl-gettypedarrayoffset-wasteful.js:

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

        TypedArray's [[DefineOwnProperty]] is incorrect with partial descriptors
        https://bugs.webkit.org/show_bug.cgi?id=188875

        Reviewed by Ross Kirsling.

        * stress/typedarray-configure-index.js:
        * test262/expectations.yaml: Mark 10 test cases as passing.

2020-04-01  Ross Kirsling  <ross.kirsling@sony.com>

        Intl.NumberFormat.prototype.format must preserve sign of -0
        https://bugs.webkit.org/show_bug.cgi?id=209880

        Reviewed by Keith Miller.

        * test262/config.yaml:
        This test was skipped as ICU version-dependent, but it shouldn't be.

        * test262/expectations.yaml:
        Mark four test cases as passing.

2020-04-01  Justin Michaud  <justin@justinmichaud.com>

        Delete IC incorrectly caches for proxies
        https://bugs.webkit.org/show_bug.cgi?id=209777

        Reviewed by Mark Lam.

        * stress/delete-property-ic-proxy.js: Added.
        (obj1.this.foo1):
        (foo1.foo2):
        (foo1):
        (foo2.foo3):
        (foo2):
        * stress/delete-property-inline-cache.js:

2020-04-01  Paulo Matos  <pmatos@igalia.com>

        [JSC] Reenable non-cloop LLint, JIT and DFG on 32-bit platforms
        https://bugs.webkit.org/show_bug.cgi?id=191163

        Reviewed by Adrian Perez de Castro.

        Re-enable tests for 32bits.

        * stress/op_add.js:
        * stress/op_bitand.js:
        * stress/op_bitor.js:
        * stress/op_bitxor.js:
        * stress/op_lshift-ConstVar.js:
        * stress/op_lshift-VarConst.js:
        * stress/op_lshift-VarVar.js:
        * stress/op_mod-ConstVar.js:
        * stress/op_mod-VarConst.js:
        * stress/op_mod-VarVar.js:
        * stress/op_mul-ConstVar.js:
        * stress/op_mul-VarConst.js:
        * stress/op_mul-VarVar.js:
        * stress/op_rshift-ConstVar.js:
        * stress/op_rshift-VarConst.js:
        * stress/op_rshift-VarVar.js:
        * stress/op_sub-ConstVar.js:
        * stress/op_sub-VarConst.js:
        * stress/op_sub-VarVar.js:
        * stress/op_urshift-ConstVar.js:
        * stress/op_urshift-VarConst.js:
        * stress/op_urshift-VarVar.js:
        * stress/spread-forward-call-varargs-stack-overflow.js:
        * stress/value-to-boolean.js:

2020-03-30  Alexey Shvayka  <shvaikalesh@gmail.com>

        Add support in named capture group identifiers for direct surrogate pairs
        https://bugs.webkit.org/show_bug.cgi?id=178174

        Reviewed by Darin Adler and Michael Saboff.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-03-30  Ross Kirsling  <ross.kirsling@sony.com>

        RegExp.prototype.exec must always access lastIndex
        https://bugs.webkit.org/show_bug.cgi?id=209375

        Reviewed by Saam Barati.

        * mozilla/ecma_3/RegExp/15.10.6.2-2.js:
        Sync test with mozilla-central's copy.
        (https://searchfox.org/mozilla-central/source/js/src/tests/non262/RegExp/15.10.6.2-2.js)

        * stress/regexp-exec-always-accesses-lastindex.js: Added.

        * test262/expectations.yaml:
        Mark eight test cases as passing.

2020-03-30  Caio Lima  <ticaiolima@gmail.com>

        [JSC] Public class field should accept "static" as field name
        https://bugs.webkit.org/show_bug.cgi?id=209703

        Reviewed by Ross Kirsling.

        * stress/class-fields-with-special-names.js: Added.

2020-03-28  Caio Lima  <ticaiolima@gmail.com>

        stress/test-out-of-memory.js test gaderning
        https://bugs.webkit.org/show_bug.cgi?id=209701

        Unreviewed test gardening.

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

2020-03-27  Mark Lam  <mark.lam@apple.com>

        Skip stress/test-out-of-memory.js on memory limited devices.
        https://bugs.webkit.org/show_bug.cgi?id=209690
        <rdar://problem/60659198>

        Reviewed by Keith Miller.

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

2020-03-27  Paulo Matos  <pmatos@igalia.com>

        Skip new memory test stress/typed-array-oom-in... in memory limited devices
        https://bugs.webkit.org/show_bug.cgi?id=209661

        Reviewed by Keith Miller.

        * stress/typed-array-oom-in-buffer-accessor.js:

2020-03-27  Paulo Matos  <pmatos@igalia.com>

        Pass hardness for test numberingSystemsForLocale-cached-... through test header
        https://bugs.webkit.org/show_bug.cgi?id=209476

        Reviewed by Yusuke Suzuki.

        Improvement over change r258190. Instead of creating a new test file
        duplicating contents where a hardness parameter is different, pass this
        through the test header using the -e flag to jsc.

        * stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js:
        * stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access_memory-limited.js: Removed.

2020-03-26  Michael Saboff  <msaboff@apple.com>

        Refactor YARR Stack Overflow Checks
        https://bugs.webkit.org/show_bug.cgi?id=209435
        rdar://problem/58988252

        Reviewed by Mark Lam.

        Added a new test and removed a now obsolete test.

        * stress/regexp-compile-oom.js: Removed because the test is no longer valid.
        Previously when therer where different stack check mechanisims we failed different.
        This test was based on the different failure modes.  With these changes, most of
        the contain subtests no longer throw as this test expects.
        * stress/regexp-huge-oom.js: Added.
        (shouldBe):
        (shouldThrow):

2020-03-26  Keith Miller  <keith_miller@apple.com>

        TypedArrays should more gracefully handle OOM during slowDownAndWasteMemory
        https://bugs.webkit.org/show_bug.cgi?id=209611

        Reviewed by Tadeu Zagallo.

        * stress/typed-array-oom-in-buffer-accessor.js: Added.
        (try.foo):

2020-03-25  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed, reimport test262 once more to make bot green.

        * test262/expectations.yaml:
        * test262/harness/assert.js:
        * test262/harness/propertyHelper.js:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/JSON/stringify/replacer-function-stack-overflow.js: Removed.
        * test262/test/built-ins/JSON/stringify/value-tojson-stack-overflow.js: Removed.
        * test262/test/built-ins/NativeErrors/AggregateError/newtarget-is-undefined.js: Added.
        * test262/test/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js:
        * test262/test/harness/assert-samevalue-zeros.js:
        * test262/test/language/expressions/class/elements/private-field-after-optional-chain.js: Added.
        * test262/test/language/statements/class/elements/private-field-after-optional-chain.js: Added.
        * test262/test262-Revision.txt:

2020-03-25  Alexey Shvayka  <shvaikalesh@gmail.com>

        RegExp.prototype[@@replace] relies on globals and doesn't perform ToLength
        https://bugs.webkit.org/show_bug.cgi?id=173867

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-03-25  Alexey Shvayka  <shvaikalesh@gmail.com>

        Invalid numeric and named references should be early syntax errors
        https://bugs.webkit.org/show_bug.cgi?id=178175

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 44 test cases as passing.

2020-03-25  Alexey Shvayka  <shvaikalesh@gmail.com>

        \b escapes inside character classes should be valid in Unicode patterns
        https://bugs.webkit.org/show_bug.cgi?id=209528

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-03-24  Tadeu Zagallo  <tzagallo@apple.com>

        LLIntGenerator must link switch jumps to otherwise redundant labels
        https://bugs.webkit.org/show_bug.cgi?id=209333
        <rdar://problem/60827987>

        Reviewed by Saam Barati.

        * wasm/stress/terminal-jump-switch-target.js: Added.

2020-03-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Update test262 to commit dfc7ecc6785e
        https://bugs.webkit.org/show_bug.cgi?id=209449

        Unreviewed test gardening.

        * test262/expectations.yaml:
        * test262/harness/propertyHelper.js:
        * test262/latest-changes-summary.txt:
        * test262/test/*: Updated.
        * test262/test262-Revision.txt:

2020-03-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Update test262 to commit 79146e5cf48d
        https://bugs.webkit.org/show_bug.cgi?id=209449

        Reviewed by Keith Miller.

        * test262/config.yaml: Add 3 tests that timeout.
        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/*: Updated.
        * test262/test262-Revision.txt:

2020-03-23  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Caller of Delete IC should emit write-barrier onto owner
        https://bugs.webkit.org/show_bug.cgi?id=209392
        <rdar://problem/60683173>

        Reviewed by Saam Barati.

        * stress/delete-ic-requires-write-barrier.js: Added.
        (foo):

2020-03-23  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG OSR exit cannot find StructureStubInfo for put_by_val if CodeBlock is once converved from Baseline to LLInt
        https://bugs.webkit.org/show_bug.cgi?id=209327
        <rdar://problem/60631061>

        Reviewed by Saam Barati.

        * stress/osr-exit-attempts-to-find-stubinfo-which-is-cleared-by-previous-baseline-to-llint-conversion.js: Added.
        (setter):
        (foo):

2020-03-23  Ross Kirsling  <ross.kirsling@sony.com>

        Catch parameters must not be lexically redeclared
        https://bugs.webkit.org/show_bug.cgi?id=208976

        Reviewed by Keith Miller.

        * test262/expectations.yaml:
        Mark four test cases as passing.

2020-03-20  Ross Kirsling  <ross.kirsling@sony.com>

        hasObservableSideEffectsForRegExpSplit doesn't check for @@match override
        https://bugs.webkit.org/show_bug.cgi?id=209363

        Reviewed by Michael Saboff.

        * test262/expectations.yaml:
        Mark two test cases as passing.

2020-03-20  Ross Kirsling  <ross.kirsling@sony.com>

        RegExp.prototype[@@replace] doesn't coerce result index to integer
        https://bugs.webkit.org/show_bug.cgi?id=209323

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        Mark six test cases as passing.

2020-03-19  Tomas Popela  <tpopela@redhat.com>

        [JSC][BigEndians] Several JSC stress tests failing
        https://bugs.webkit.org/show_bug.cgi?id=194007

        Reviewed by Michael Catanzaro.

        Adapt the DataView tests to be able to pass on little endian as well
        as the big endian hardware. Do so by introducing method that determine
        the endianess and based on its value it saves the expected results in
        the right format.

        * stress/dataview-get-cse.js:
        (getIsLittleEndian):
        (adjustForEndianess):
        (test3.foo):
        (test3):
        * stress/dataview-jit-get.js:
        (getIsLittleEndian):
        (test1.adjustForEndianess):
        (test1):
        (test2.adjustForEndianess):
        (test2):
        (test3.adjustForEndianess):
        (test3):
        (adjustForEndianessUint32):
        (test4):
        (test5):
        (test6):
        (test7):
        (test8):
        * stress/dataview-jit-neuter.js:
        (getIsLittleEndian):
        (adjustForEndianess):
        (test):
        (test2):
        * stress/dataview-jit-set-nan.js:
        (getIsLittleEndian):
        (adjustForEndianessFloat32):
        (test):
        * stress/dataview-jit-set.js:
        (getIsLittleEndian):
        (readHex):
        (adjustForEndianessUint16):
        (test):
        (test2):
        (adjustForEndianessUint32):
        (test3):
        (test4):
        (adjustForEndianessFloat32):
        (test5):
        (adjustForEndianessFloat64):
        (test6):
        (isLittleEndian): Deleted.

2020-03-18  Yusuke Suzuki  <ysuzuki@apple.com>

        Add a way to mark a rejected promise as handled
        https://bugs.webkit.org/show_bug.cgi?id=209241

        Reviewed by Michael Saboff.

        * stress/reject-as-handled.js: Added.
        (shouldBe):
        (set new):

2020-03-16  Keith Miller  <keith_miller@apple.com>

        JavaScript identifier grammar supports unescaped astral symbols, but JSC doesn’t
        https://bugs.webkit.org/show_bug.cgi?id=208998

        Reviewed by Michael Saboff.

        * stress/unicode-identifiers-with-surrogate-pairs.js: Added.
        (let.c.of.chars.eval.foo):
        (throwsSyntaxError):
        (let.c.of.continueChars.throwsSyntaxError.foo):

2020-03-13  Saam Barati  <sbarati@apple.com>

        skip wasm/function-tests/grow-memory-cause-gc.js on memory limited devices
        https://bugs.webkit.org/show_bug.cgi?id=209069
        <rdar://problem/59954558>

        Reviewed by Yusuke Suzuki.

        * wasm/function-tests/grow-memory-cause-gc.js:

2020-03-13  Alexey Shvayka  <shvaikalesh@gmail.com>

        Bound functions should pass correct NewTarget value
        https://bugs.webkit.org/show_bug.cgi?id=209057

        Reviewed by Keith Miller.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-03-11  Keith Miller  <keith_miller@apple.com>

        Test262-runner should always consider crashes as new failures
        https://bugs.webkit.org/show_bug.cgi?id=208943

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:

2020-03-11  Keith Miller  <keith_miller@apple.com>

        Throws incorrectly a syntax error when declaring a top level catch variable the same as a parameter
        https://bugs.webkit.org/show_bug.cgi?id=189914

        Reviewed by Saam Barati.

        * ChakraCore/test/es6/globalParamCatchNewTargetSyntaxError.baseline-jsc:
        * stress/catch-destructuring-shadow-lexical-const-variable-global.js: Added.
        (catch):
        * stress/catch-destructuring-shadow-lexical-variable-class.js: Added.
        (Foo):
        (Bar):
        (Baz):
        * stress/catch-destructuring-shadow-lexical-variable-function.js: Added.
        (foo):
        (bar):
        * stress/catch-destructuring-shadow-lexical-variable-global.js: Added.
        (catch):
        * stress/catch-destructuring-shadow-var-global.js: Added.
        (catch):
        * test262/expectations.yaml:

2020-03-10  Ross Kirsling  <ross.kirsling@sony.com>

        Re-import test262 to acquire DST fix
        https://bugs.webkit.org/show_bug.cgi?id=208901

        Reviewed by Don Olmstead.

        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/AggregateError/newtarget-proto-fallback.js:
        * test262/test/built-ins/Array/prototype/filter/create-proto-from-ctor-realm-array.js:
        * test262/test/built-ins/Array/prototype/indexOf/15.4.4.14-4-4.js:
        * test262/test/built-ins/Date/parse/without-utc-offset.js:
        * test262/test262-Revision.txt:

2020-03-10  Paulo Matos  <pmatos@igalia.com>

        JSC 32bits is failing on new test stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js
        https://bugs.webkit.org/show_bug.cgi?id=206864

        Reviewed by Yusuke Suzuki.

        Add new test to memory limited devices - behaviour is the same as 
        numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js
        but it creates 25 threads instead of 100.

        * stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access_memory-limited.js: Added.
        (let.theCode):

2020-03-09  Alexey Shvayka  <shvaikalesh@gmail.com>

        @putByValDirect does not perform [[DefineOwnProperty]] correctly
        https://bugs.webkit.org/show_bug.cgi?id=208708

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml: Mark 46 test cases as passing.

2020-03-09  Caio Lima  <ticaiolima@gmail.com>

        Tail calls are broken on ARM_THUMB2 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=197797

        Reviewed by Yusuke Suzuki.

        * stress/tail-call-with-spilled-registers.js: Added.

2020-03-07  Mark Lam  <mark.lam@apple.com>

        Remove bad assertion in FTLLowerDFGToB3's compileDelBy().
        https://bugs.webkit.org/show_bug.cgi?id=208764
        <rdar://problem/59940095>

        Reviewed by Keith Miller.

        * stress/delete-by-val-with-base-and-subscript-using-same-cell.js: Added.
        * stress/delete-by-val-with-base-and-subscript-using-same-non-cell.js: Added.

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

        [JSC] Enable public class fields
        https://bugs.webkit.org/show_bug.cgi?id=208756

        Reviewed by Mark Lam.

        Rename useClassFields to usePublicClassFields to keep separate from usePrivateClassFields once
        it is implemented.

        * stress/big-int-as-property-name.js:
        * stress/class-fields-bytecode-cache.js:
        * stress/class-fields-computed-to-property-key.js:
        * stress/class-fields-function-name.js:
        * stress/class-fields-harmony.js:
        * stress/class-fields-proxy-define-property.js:
        * stress/class-fields-stress-instance.js:
        * stress/class-fields-to-property-key-const-string-ftl.js:
        * stress/class-fields-to-property-key-const-symbol-ftl.js:
        * stress/class-fields-to-property-key-slow-object-tostring-ftl.js:
        * stress/class-fields-to-property-key-slow-object-valueof-ftl.js:
        * stress/class-fields-to-property-key-string-object-ftl.js:
        * stress/class-fields-to-property-key-string-or-string-object-ftl.js:
        * stress/generator-syntax.js:
        * stress/method-name.js:
        * test262/config.yaml:

2020-03-06  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSON.stringify should call replacer on deleted properties
        https://bugs.webkit.org/show_bug.cgi?id=208725

        Reviewed by Ross Kirsling.

        * microbenchmarks/json-stringify-many-objects-to-json.js: Added.
        * microbenchmarks/json-stringify-many-objects.js: Added.
        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-03-04  Mark Lam  <mark.lam@apple.com>

        Handle an out of memory error while constructing the BytecodeGenerator.
        https://bugs.webkit.org/show_bug.cgi?id=208622
        <rdar://problem/59341136>

        Reviewed by Saam Barati.

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

2020-03-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] @hasOwnLengthProperty returns wrong value if "length" is attempted to be modified
        https://bugs.webkit.org/show_bug.cgi?id=208497
        <rdar://problem/59913544>

        Reviewed by Mark Lam.

        * stress/function-length-update.js: Added.
        (shouldBe):
        (userFunction):
        (userFunction2):

2020-03-02  Saam Barati  <sbarati@apple.com>

        Don't skip tests unnecessarily on arm64
        https://bugs.webkit.org/show_bug.cgi?id=208470
        <rdar://problem/59968869>

        Reviewed by Tadeu Zagallo.

        * microbenchmarks/bit-test-constant.js:
        * microbenchmarks/bit-test-nonconstant.js:
        * microbenchmarks/memcpy-typed-loop-large.js:
        * microbenchmarks/memcpy-typed-loop-small.js:
        * microbenchmarks/mul-immediate-sub.js:
        * stress/dont-range-based-iterate-vector-that-is-mutated.js:
        * stress/dont-reserve-huge-capacity-lexer.js:
        * stress/new-largeish-contiguous-array-with-size.js:
        * stress/sampling-profiler-richards.js:
        * typeProfiler/deltablue-for-of.js:
        * typeProfiler/getter-richards.js:
        * wasm/regress/llint-callee-saves-with-fast-memory.js:

2020-03-02  Justin Michaud  <justin_michaud@apple.com>

        Delete by val caching does not keep the subscript alive
        https://bugs.webkit.org/show_bug.cgi?id=208393

        Reviewed by Yusuke Suzuki.

        * stress/delete-property-ic-stress.js: Added.

2020-02-27  Justin Michaud  <justin_michaud@apple.com>

        Poly proto should work with property delete transitions
        https://bugs.webkit.org/show_bug.cgi?id=208261

        Reviewed by Saam Barati.

        * stress/delete-property-poly-proto.js: Added.
        (A.prototype.set x):
        (A):
        (B):

2020-02-27  Ross Kirsling  <ross.kirsling@sony.com>

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

        Reviewed by Yusuke Suzuki.

        * test262/config.yaml:
        * test262/expectations.yaml:
        * test262/harness/async-gc.js:
        * test262/latest-changes-summary.txt:
        * test262/test/:
        * test262/test262-Revision.txt:

2020-02-26  Caio Lima  <ticaiolima@gmail.com>

        [JSC][MIPS] Adding support to Checkpoints
        https://bugs.webkit.org/show_bug.cgi?id=208196

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/memcpy-typed-loop.js:

2020-02-25  Justin Michaud  <justin_michaud@apple.com>

        Inline Cache delete by id/val
        https://bugs.webkit.org/show_bug.cgi?id=207522

        Reviewed by Keith Miller and Filip Pizlo. 

        * microbenchmarks/delete-property-from-prototype-chain.js:
        (delete.C.prototype.z):
        * microbenchmarks/delete-property-inline-cache-polymorphic.js: Added.
        (C):
        (noInline.C.foo):
        (noInline.foo.F):
        (noInline.F):
        * microbenchmarks/delete-property-inline-cache.js: Added.
        (C):
        (noInline.C.D):
        (noInline.D.foo):
        (noInline.foo.E):
        (noInline.E.F):
        (noInline.F):
        * microbenchmarks/delete-property-keeps-cacheable-structure.js:
        * stress/delete-property-check-structure-transition.js:
        (sd): Deleted.
        (testDeleteIsNotUncacheable): Deleted.
        (): Deleted.
        (testCanFlatten): Deleted.
        (testDeleteWithInlineCache.Object.prototype.globalProperty.42.makeFoo): Deleted.
        (testDeleteWithInlineCache.noInline.doTest): Deleted.
        (testDeleteWithInlineCache): Deleted.
        * stress/delete-property-inline-cache.js: Added.
        (assert):
        (assert_eq):
        (assert_neq):
        (assert_throws):
        (noInline.assert.noInline.assert_eq.noInline.assert_neq.noInline.assert_throws.testCacheableDeleteById.makeFoo):
        (noInline.assert.noInline.assert_eq.noInline.assert_neq.noInline.assert_throws.testCacheableDeleteById):
        (noInline.testCacheableDeleteById.testCacheableDeleteByVal.makeFoo2):
        (noInline.testCacheableDeleteById.testCacheableDeleteByVal):
        (noInline.testCacheableDeleteByVal.testCacheableEmptyDeleteById.makeFoo3):
        (noInline.testCacheableDeleteByVal.testCacheableEmptyDeleteById):
        (noInline.testCacheableEmptyDeleteById.testCacheableDeleteByIdMiss.makeFoo4):
        (noInline.testCacheableEmptyDeleteById.testCacheableDeleteByIdMiss):
        (noInline.testCacheableDeleteByIdMiss.testDeleteIndex.makeFoo5):
        (noInline.testCacheableDeleteByIdMiss.testDeleteIndex):
        (noInline.testDeleteIndex.testPolymorphicDelByVal.makeFoo6):
        (noInline.testDeleteIndex.testPolymorphicDelByVal):
        (noInline.testPolymorphicDelByVal.testBigintDeleteByVal.makeFoo7):
        (noInline.testPolymorphicDelByVal.testBigintDeleteByVal):
        (noInline.testBigintDeleteByVal.testSymbolDeleteByVal.makeFoo8):
        (noInline.testBigintDeleteByVal.testSymbolDeleteByVal):
        (noInline.testSymbolDeleteByVal.testObjDeleteByVal.makeFoo9):
        (noInline.testSymbolDeleteByVal.testObjDeleteByVal):
        (noInline.testObjDeleteByVal.testStrict.makeFoo10):
        (noInline.testObjDeleteByVal.testStrict):
        (noInline.testStrict.testOverride.arr.j):
        (noInline.testStrict.testOverride):
        (noInline.testOverride.testNonObject.deleteIt):
        (noInline.testOverride.testNonObject):
        (noInline.testNonObject.testNonObjectStrict.deleteIt):
        (noInline.testNonObject.testNonObjectStrict):
        (noInline.testNonObjectStrict.testExceptionUnwind.mutateThem):
        (noInline.testNonObjectStrict.testExceptionUnwind.noInline.deleteIt):
        (noInline.testNonObjectStrict.testExceptionUnwind):
        (noInline.testExceptionUnwind.testTDZ):
        (noInline.testTDZ):

2020-02-19  Ross Kirsling  <ross.kirsling@sony.com>

        Computed Properties with increment sometimes produces incorrect results
        https://bugs.webkit.org/show_bug.cgi?id=170934

        Reviewed by Yusuke Suzuki.

        * stress/computed-property-increment.js: Added.
        * test262/expectations.yaml: Mark two test cases as passing.

2020-02-19  Keith Miller  <keith_miller@apple.com>

        Disable Wasm reference types by default
        https://bugs.webkit.org/show_bug.cgi?id=207952

        Reviewed by Mark Lam.

        * wasm/stress/immutable-globals.js:
        * wasm/stress/local-ref.js:
        * wasm/stress/mutable-globals.js:

2020-02-18  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Computed function properties compute their keys twice
        https://bugs.webkit.org/show_bug.cgi?id=207297

        Reviewed by Keith Miller.

        * stress/computed-property-key-side-effects.js: Added.
        * test262/expectations.yaml: Mark 6 test cases as passing.

2020-02-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JITThunk should be HashSet<Weak<NativeExecutable>> with appropriate GC weakness handling
        https://bugs.webkit.org/show_bug.cgi?id=207715

        Reviewed by Darin Adler.

        * stress/stress-jitthunks.js: Added.
        (let.set newGlobal):
        (set catch):

2020-02-17  Tadeu Zagallo  <tzagallo@apple.com>

        [Wasm] REGRESSION(r256665): Wasm->JS call IC needs to save memory size register
        https://bugs.webkit.org/show_bug.cgi?id=207849

        Reviewed by Mark Lam.

        * wasm/regress/regress-256665.js: Added.
        (f):

2020-02-14  Tadeu Zagallo  <tzagallo@apple.com>

        Unreviewed: fix broken tests added in r256665
        https://bugs.webkit.org/show_bug.cgi?id=207727

        Our inline WAT doesn't seem to like named blocks/branch targets.

        * wasm/regress/llint-callee-saves-with-fast-memory.js:
        * wasm/regress/llint-callee-saves-without-fast-memory.js:

2020-02-14  Tadeu Zagallo  <tzagallo@apple.com>

        [WASM] Wasm interpreter's calling convention doesn't match Wasm JIT's convention.
        https://bugs.webkit.org/show_bug.cgi?id=207727

        Reviewed by Mark Lam.

        * wasm/regress/llint-callee-saves-with-fast-memory.js: Added.
        * wasm/regress/llint-callee-saves-without-fast-memory.js: Added.

2020-02-13  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] We don't support BigInt literal as PropertyName
        https://bugs.webkit.org/show_bug.cgi?id=206888

        Reviewed by Ross Kirsling.

        * stress/big-int-as-property-name.js: Added.

2020-02-10  Mark Lam  <mark.lam@apple.com>

        Placate exception check validator in GenericArguments<Type>::put().
        https://bugs.webkit.org/show_bug.cgi?id=207485
        <rdar://problem/59302535>

        Reviewed by Robin Morisset.

        * stress/placate-exception-check-validator-in-GenericArguments-put.js: Added.

2020-02-10  Justin Michaud  <justin_michaud@apple.com>

        arm64_32: microbenchmarks/delete-property-keeps-cacheable-structure.js is timing out
        https://bugs.webkit.org/show_bug.cgi?id=207484

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/delete-property-keeps-cacheable-structure.js:

2020-02-10  Mark Lam  <mark.lam@apple.com>

        Missing exception check in GenericArguments<Type>::deletePropertyByIndex().
        https://bugs.webkit.org/show_bug.cgi?id=207483
        <rdar://problem/59302616>

        Reviewed by Yusuke Suzuki.

        * stress/missing-exception-check-in-GenericArguments-deletePropertyByIndex.js: Added.

2020-02-06  Sukolsak Sakshuwong  <sukolsak@gmail.com> and Alexey Shvayka  <shvaikalesh@gmail.com>

        JavaScript string corruption using RegExp with unicode character
        https://bugs.webkit.org/show_bug.cgi?id=187947

        Reviewed by Yusuke Suzuki.

        This change adds regression test for string corruption that occured after
        non-BMP character was removed by String.prototype.replace.
        The issue was fixed in https://trac.webkit.org/changeset/253648/webkit.

        Also, this patch brings back:
        1. An out-of-order character class range test.
        2. Dangling and combined surrogates tests (as webkit.org/b/154863 is now resolved).

        * stress/regress-187947.js: Added.

2020-02-05  Justin Michaud  <justin_michaud@apple.com>

        Deleting a property should not turn structures into uncacheable dictionaries
        https://bugs.webkit.org/show_bug.cgi?id=206430

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/delete-property-from-prototype-chain.js: Added.
        (assert):
        (noInline.assert.getZ):
        (noInline.getZ.C):
        (doTest):
        (delete.C.prototype.z):
        * microbenchmarks/delete-property-keeps-cacheable-structure.js: Added.
        (assert):
        (C):
        (doTest):
        * stress/cache-put-by-id-different-attributes.js:
        (makePrototypeDict):
        (set x):
        * stress/cache-put-by-id-different-offset.js:
        (makePrototypeDict):
        (set x):
        * stress/cache-put-by-id-poly-proto.js:
        (makePrototypeDict):
        (set _):
        * stress/delete-property-check-structure-transition.js: Added.
        (assert):
        (assert_eq):
        (assert_neq):
        (sd):
        (sid):
        (testDeleteIsNotUncacheable):
        (testCanMaterializeDeletes):
        (testCanFlatten):
        (testDeleteWithInlineCache.Object.prototype.globalProperty.42.makeFoo):
        (testDeleteWithInlineCache.noInline.doTest):
        (testDeleteWithInlineCache):
        * stress/flatten-object-zero-unused-inline-properties.js:

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

        Quantifiers after lookahead assertions should be syntax errors in Unicode patterns only
        https://bugs.webkit.org/show_bug.cgi?id=206988

        Reviewed by Darin Adler and Ross Kirsling.

        * test262/expectations.yaml: Mark 10 test cases as passing.

2020-02-03  Alexey Shvayka  <shvaikalesh@gmail.com>

        \0 identity escapes should be syntax errors in Unicode patterns only
        https://bugs.webkit.org/show_bug.cgi?id=207114

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-02-01  Alexey Shvayka  <shvaikalesh@gmail.com>

        Non-alphabetical \c escapes should be syntax errors in Unicode patterns only
        https://bugs.webkit.org/show_bug.cgi?id=207091

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-01-31  Saam Barati  <sbarati@apple.com>

        Unreviewed. Don't dump disassembly in test.

        * stress/get-getter-setter-by-offset-not-always-safe-to-execute.js:

2020-01-31  Saam Barati  <sbarati@apple.com>

        GetGetterSetterByOffset and GetGetter/GetSetter are not always safe to execute
        https://bugs.webkit.org/show_bug.cgi?id=206805
        <rdar://problem/58898161>

        Reviewed by Yusuke Suzuki.

        * stress/get-getter-setter-by-offset-not-always-safe-to-execute.js: Added.

2020-01-31  Alexey Shvayka  <shvaikalesh@gmail.com>

        Unmatched ] or } brackets should be syntax errors in Unicode patterns only
        https://bugs.webkit.org/show_bug.cgi?id=207023

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-01-30  Alexey Shvayka  <shvaikalesh@gmail.com>

        Incomplete braced quantifiers should be banned in Unicode patterns only
        https://bugs.webkit.org/show_bug.cgi?id=206776

        Reviewed by Darin Adler.

        Although the change does not affect Unicode property escapes, a few
        test/built-ins/RegExp/property-escapes/non-existent-property-value*.js files
        are now passing because they had \\p or \\P instead of CharacterClassEscape.

        * test262/expectations.yaml: Mark 18 test cases as passing.

2020-01-30  Keith Miller  <keith_miller@apple.com>

        Parser needs to restore unary stack state when backtracking
        https://bugs.webkit.org/show_bug.cgi?id=206972

        Reviewed by Saam Barati.

        * stress/parser-save-state-remove-stale-entries.js: Added.
        * stress/parser-syntax-checker-assignments-are-not-resolve-expressions.js: Added.
        (foo):

2020-01-29  Mark Lam  <mark.lam@apple.com>

        Fix bad assertion in InternalFunctionAllocationProfile::createAllocationStructureFromBase().
        https://bugs.webkit.org/show_bug.cgi?id=206981
        <rdar://problem/58985736>

        Reviewed by Keith Miller.

        * stress/InternalFunctionAllocationProfile-createAllocationStructureFromBase-should-allow-for-same-classInfo-from-different-globals.js: Added.

2020-01-29  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, update tests
        https://bugs.webkit.org/show_bug.cgi?id=206846

        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior-debug.js: Copied from JSTests/stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior.js.
        (shouldBe):
        (putter):
        (not_string.toString):
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior.js:
        * stress/incorrect-put-could-generate-invalid-ic-involving-dictionary-flatten-debug.js: Copied from JSTests/stress/incorrect-put-could-generate-invalid-ic-involving-dictionary-flatten.js.
        (shouldBe):
        (dictionary):
        (putter):
        (not_string.toString):
        * stress/incorrect-put-could-generate-invalid-ic-involving-dictionary-flatten.js:

2020-01-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Give up IC when unknown structure transition happens
        https://bugs.webkit.org/show_bug.cgi?id=206846

        Reviewed by Mark Lam.

        * stress/ensure-crash.js: Added.
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior-bad-transition-debug.js: Added.
        (shouldBe):
        (putter):
        (not_string.toString):
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior-bad-transition.js: Added.
        (shouldBe):
        (putter):
        (not_string.toString):
        * stress/incorrect-put-could-generate-invalid-ic-but-still-not-causing-bad-behavior.js: Added.
        (shouldBe):
        (putter):
        (not_string.toString):
        * stress/incorrect-put-could-generate-invalid-ic-involving-dictionary-flatten.js: Added.
        (shouldBe):
        (dictionary):
        (putter):
        (not_string.toString):

2020-01-29  Paulo Matos  <pmatos@igalia.com>

        Skip slow test operand-should-fit-in-abstract-heap-encoded-payload-format.js on mips and arm
        https://bugs.webkit.org/show_bug.cgi?id=206926

        Unreviewed test gardening.

        This test has quadratic behaviour with the size of a, and on mips and arm it just takes too
        long to run with such high value of a. Therefore we skip.

        * stress/operand-should-fit-in-abstract-heap-encoded-payload-format.js:

2020-01-28  Paulo Matos  <pmatos@igalia.com>

        Skip test numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js in arm and mips
        https://bugs.webkit.org/show_bug.cgi?id=206865

        Reviewed by Žan Doberšek.

        * stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js:

2020-01-26  Alexey Shvayka  <shvaikalesh@gmail.com>

        Invalid ranges in character classes should be banned in Unicode patterns only
        https://bugs.webkit.org/show_bug.cgi?id=206768

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 18 test cases as passing.

2020-01-24  Mark Lam  <mark.lam@apple.com>

        IntlObject's cached strings should be immortal and safe for concurrent access.
        https://bugs.webkit.org/show_bug.cgi?id=206779
        <rdar://problem/58831763>

        Reviewed by Yusuke Suzuki.

        * stress/numberingSystemsForLocale-cached-strings-should-be-immortal-and-safe-for-concurrent-access.js: Added.

2020-01-24  Yusuke Suzuki  <ysuzuki@apple.com>

        REGRESSION (r254964-r254970?): Catalina Debug JSC bot timing out while running tests
        https://bugs.webkit.org/show_bug.cgi?id=206785

        Unreviewed, skipping the test if $buildType is "debug".

        * stress/operand-should-fit-in-abstract-heap-encoded-payload-format.js:

2020-01-23  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG OSR exit is not marking CodeBlock::m_hasLinkedOSRExit when the exit target is checkpoint
        https://bugs.webkit.org/show_bug.cgi?id=206726
        <rdar://problem/58827849>

        Reviewed by Saam Barati.

        * stress/exit-target-code-block-can-be-changed-between-llint-and-baseline.js: Added.
        (bar):
        (foo):

2020-01-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Bits from Operand should fit in bits reserved in AbstractHeap's Payload
        https://bugs.webkit.org/show_bug.cgi?id=206619
        <rdar://problem/58270260>

        Reviewed by Keith Miller.

        * stress/operand-should-fit-in-abstract-heap-encoded-payload-format.js: Added.

2020-01-22  Keith Miller  <keith_miller@apple.com>

        InternalField and CheckNeutered DFG nodes are not always safe to execute
        https://bugs.webkit.org/show_bug.cgi?id=206632

        Reviewed by Saam Barati.

        * stress/for-of-bad-internal-field-hoist.js: Added.
        (foo):

2020-01-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DateMath should accept more ISO-8601 timezone designators even if they are not included in ECMA262 to produce expected results in the wild code
        https://bugs.webkit.org/show_bug.cgi?id=160287

        Reviewed by Ross Kirsling.

        * stress/relaxed-timezone-designators.js: Added.
        (shouldBe):
        (parsedDate):

2020-01-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add CheckArrayOrEmpty to handle the case when hoisting CheckArray for places where input can be empty
        https://bugs.webkit.org/show_bug.cgi?id=206571
        <rdar://problem/58757016>

        Reviewed by Saam Barati.

        * stress/check-array-or-empty.js: Added.
        (C):

2020-01-21  Tadeu Zagallo  <tzagallo@apple.com>

        Object allocation sinking is missing PutHint for allocations unreachable in the graph
        https://bugs.webkit.org/show_bug.cgi?id=203799
        <rdar://problem/56852162>

        Reviewed by Saam Barati.

        * stress/allocation-sinking-puthint-control-flow-2.js: Added.
        (f.handler.construct):
        (f):

2020-01-20  Gus Caplan  <me@gus.host>

        Remove own toString from NativeError prototype
        https://bugs.webkit.org/show_bug.cgi?id=204629

        Reviewed by Ross Kirsling.

        NativeError prototypes are expected to inherit toString from
        Error.prototype. See https://github.com/tc39/ecma262/issues/1794
        for additional details.

        * stress/nativeerror-prototype-tostring.js:

2020-01-20  Caio Lima  <ticaiolima@gmail.com>

        Skip tests when there is no JIT build on ARMv7 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=206496

        Unreviewed gardening.

        * microbenchmarks/bit-test-constant.js:
        * microbenchmarks/bit-test-nonconstant.js:
        * microbenchmarks/memcpy-typed-loop-large.js:
        * microbenchmarks/memcpy-typed-loop-small.js:
        * microbenchmarks/mul-immediate-sub.js:
        * stress/dont-range-based-iterate-vector-that-is-mutated.js:
        * stress/int8-repeat-in-then-out-of-bounds.js:
        * stress/sampling-profiler-richards.js:

2020-01-18  Caitlin Potter  <caitp@igalia.com>

        [JSC] add DFG/FTL support for op_to_property_key
        https://bugs.webkit.org/show_bug.cgi?id=206368

        Reviewed by Saam Barati.

        * stress/class-fields-to-property-key-const-string-ftl.js: Added.
        * stress/class-fields-to-property-key-const-symbol-ftl.js: Added.
        * stress/class-fields-to-property-key-slow-object-tostring-ftl.js: Added.
        * stress/class-fields-to-property-key-slow-object-valueof-ftl.js: Added.
        * stress/class-fields-to-property-key-string-object-ftl.js: Added.
        * stress/class-fields-to-property-key-string-or-string-object-ftl.js: Added.

2020-01-17  Saam Barati  <sbarati@apple.com>

        Air O0 should have better stack allocation
        https://bugs.webkit.org/show_bug.cgi?id=206436

        Reviewed by Tadeu Zagallo.

        * wasm/stress/dont-stack-overflow-in-air.js: Added.

2020-01-17  Mark Lam  <mark.lam@apple.com>

        JSModuleLoader's printableModuleKey() should never throw.
        https://bugs.webkit.org/show_bug.cgi?id=206461
        <rdar://problem/58696678>

        Reviewed by Michael Saboff.

        * stress/printableModuleKey-should-never-throw.js: Added.

2020-01-17  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSON.parse should lookup prototype chains during revival
        https://bugs.webkit.org/show_bug.cgi?id=205769

        Reviewed by Saam Barati.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2020-01-16  Robin Morisset  <rmorisset@apple.com>

        [ESNext] Enables a way to throw an error on ByteCodeGenerator step
        https://bugs.webkit.org/show_bug.cgi?id=180139

        Reviewed by Mark Lam.

        * stress/eval-huge-big-int-memory-overflow.js: Added.

2020-01-16  Keith Miller  <keith_miller@apple.com>

        Reland bytecode checkpoints since bugs have been fixed
        https://bugs.webkit.org/show_bug.cgi?id=206361

        Unreviewed, reland.

        The watch bugs have been fixed by https://trac.webkit.org/changeset/254674

        * stress/apply-osr-exit-should-get-length-once-exceptions-occasionally.js: Added.
        (expectedArgCount):
        (callee):
        (test):
        (let.array.get length):
        * stress/apply-osr-exit-should-get-length-once.js: Added.
        (expectedArgCount):
        (callee):
        (test):
        (let.array.get length):
        * stress/load-varargs-then-inlined-call-and-exit-strict.js:
        (checkEqual):
        * stress/recursive-tail-call-with-different-argument-count.js:
        * stress/rest-varargs-osr-exit-to-checkpoint.js: Added.
        (foo):
        (bar):

2020-01-16  Keith Miller  <keith_miller@apple.com>

        Revert 254725 since it breaks tests
        https://bugs.webkit.org/show_bug.cgi?id=206391

        Unreviewed, revert.

        * stress/allocation-sinking-puthint-control-flow-2.js: Removed.

2020-01-16  Tadeu Zagallo  <tzagallo@apple.com>

        Object allocation sinking is missing PutHint for allocations unreachable in the graph
        https://bugs.webkit.org/show_bug.cgi?id=203799
        <rdar://problem/56852162>

        Reviewed by Saam Barati.

        * stress/allocation-sinking-puthint-control-flow-2.js: Added.
        (f.handler.construct):
        (f):

2020-01-16  Robin Morisset  <rmorisset@apple.com>

        Teach the bytecode that arithmetic operations can return bigints
        https://bugs.webkit.org/show_bug.cgi?id=205416

        Reviewed by Yusuke Suzuki.

        This file crashes in debug mode without the fix.

        * stress/big-int-arithmetic-return-big-int.js: Added.
        (fooAdd):
        (fooSub):
        (fooMul):
        (fooDiv):

2020-01-16  Mark Lam  <mark.lam@apple.com>

        operationToObject() should check for a null errorMessage.
        https://bugs.webkit.org/show_bug.cgi?id=206339
        <rdar://problem/58449666>

        Reviewed by Yusuke Suzuki.

        * stress/operationToObject-should-check-for-null-errorMessage.js: Added.

2020-01-15  Caitlin Potter <caitp@igalia.com>

        [JSC] Add support for public class fields
        https://bugs.webkit.org/show_bug.cgi?id=174212

        Reviewed by Yusuke Suzuki.

        New syntax invalidates some test expectations:

        "async <linefeed> MethodDefinition" is no longer an unexpected "async"
        token. It is now an instance field named "async" with no initializer,
        and an automatic semicolon, followed by MethodDefinition.

        "get|set GeneratorMethodDefinition"'s error message has changed, due to "get"
        being valid class field names.

        Many class-syntax tests relating to automatic semicolon insertion are
        no longer valid, as a line containing nothing but an identifier is now
        a valid class element.

        * stress/async-await-syntax.js:
        * stress/class-fields-bytecode-cache.js: Added.
        * stress/class-fields-computed-to-property-key.js: Added.
        * stress/class-fields-function-name.js: Added.
        * stress/class-fields-harmony.js: Added.
        * stress/class-fields-proxy-define-property.js: Added.
        * stress/class-fields-stress-instance.js: Added.
        * stress/generator-syntax.js:
        * stress/method-name.js:
        * test262/config.yaml:

2020-01-15  Keith Miller  <keith_miller@apple.com>

        Revert bytecode checkpoints since it breaks watch
        https://bugs.webkit.org/show_bug.cgi?id=206301

        Unreviewed, revert.

2020-01-15  Alexey Shvayka  <shvaikalesh@gmail.com>

        Object.preventExtensions should throw if not successful
        https://bugs.webkit.org/show_bug.cgi?id=206131

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-01-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r254480, r254496, and r254517.
        https://bugs.webkit.org/show_bug.cgi?id=206278

        "It regressed JetStream2 and Speedometer2" (Requested by
        saamyjoon on #webkit).

        Reverted changesets:

        "Throw away baseline code if there is an optimized
        replacement"
        https://bugs.webkit.org/show_bug.cgi?id=202503
        https://trac.webkit.org/changeset/254480

        "Unreviewed. Change useLLInt=0 to forceBaseline=1"
        https://trac.webkit.org/changeset/254496

        "Add an option that enables/disables throwing away baseline
        JIT code"
        https://bugs.webkit.org/show_bug.cgi?id=206244
        https://trac.webkit.org/changeset/254517

2020-01-13  Saam Barati  <sbarati@apple.com>

        Unreviewed. Change useLLInt=0 to forceBaseline=1

        * stress/racy-gc-cleanup-of-identifier-after-mutator-stops-running.js:

2020-01-13  Keith Miller  <keith_miller@apple.com>

        scanSideState scans too much side state
        https://bugs.webkit.org/show_bug.cgi?id=206166

        Reviewed by Tadeu Zagallo.

        * stress/checkpoint-side-state-gc-tmps-overflow.js: Added.
        (v8):

2020-01-13  Saam Barati  <sbarati@apple.com>

        Throw away baseline code if there is an optimized replacement
        https://bugs.webkit.org/show_bug.cgi?id=202503

        Reviewed by Yusuke Suzuki.

        * stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js:
        * stress/getter-setter-inlining-should-emit-movhint.js:
        * stress/make-dictionary-repatch.js:
        * stress/merging-ic-variants-should-bail-if-structures-overlap.js:
        * stress/proxy-getter-stack-overflow.js:
        * stress/regress-192717.js:
        * stress/retry-cache-later.js:

2020-01-13  Mark Lam  <mark.lam@apple.com>

        Replace uses of Box<Identifier> with a new CacheableIdentifier class.
        https://bugs.webkit.org/show_bug.cgi?id=205544
        <rdar://problem/58041800>

        Reviewed by Saam Barati.

        * stress/racy-gc-cleanup-of-identifier-after-mutator-stops-running.js: Added.

2020-01-11  Keith Miller  <keith_miller@apple.com>

        CheckNeutered needs to claim it reads JSType in clobberize.
        https://bugs.webkit.org/show_bug.cgi?id=206136

        Reviewed by Yusuke Suzuki.

        * stress/check-neutered-clobberize-reads-jstype.js: Added.
        (foo):

2020-01-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use internal object field mechanism to implement JSStringIterator
        https://bugs.webkit.org/show_bug.cgi?id=206144

        Reviewed by Ross Kirsling.

        * stress/string-iterators.js:
        * stress/tailCallForwardArguments.js:
        (putFuncToPrivateName.createBuiltin):
        (createTailCallForwardingFuncWith):

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

        [JSC] Flush old tables in End phase
        https://bugs.webkit.org/show_bug.cgi?id=206120
        <rdar://problem/58039989>

        Reviewed by Mark Lam.

        * stress/create-many-realms.js: Added.
        (foo):

2020-01-10  Caitlin Potter  <caitp@igalia.com> and Alexey Shvayka  <shvaikalesh@gmail.com>

        Object.keys should throw if called on module namespace object with uninitialized binding
        https://bugs.webkit.org/show_bug.cgi?id=205983

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-01-10  Saam Barati  <sbarati@apple.com>

        ObjectAllocationSinkingPhase doesn't model pointers to allocations in control flow properly
        https://bugs.webkit.org/show_bug.cgi?id=204738
        <rdar://problem/57553238>

        Reviewed by Yusuke Suzuki.

        * stress/allocation-sinking-must-model-allocation-pointers-properly-2.js: Added.
        (assert):
        (v9):
        * stress/allocation-sinking-must-model-allocation-pointers-properly-3.js: Added.
        (assert):
        (v9):
        * stress/allocation-sinking-must-model-allocation-pointers-properly-4.js: Added.
        (bool):
        (effects):
        (escape):
        (bar):
        * stress/allocation-sinking-must-model-allocation-pointers-properly.js: Added.
        (alwaysFalse):
        (sometimesZero):
        (assert):
        (v9):

2020-01-08  Keith Miller  <keith_miller@apple.com>

        [JSC] Introduce JSArrayIterator
        https://bugs.webkit.org/show_bug.cgi?id=204043

        Reviewed by Yusuke Suzuki.

        * stress/array-iterator-materialize-at-osr-exit.js: Added.
        (shouldBe):
        (test):
        * stress/array-iterator-materialize-one-path.js: Added.
        (shouldBe):
        (test):
        * stress/array-iterator-materialize.js: Added.
        (shouldBe):
        (test):
        * stress/array-iterator-sinking.js: Added.
        (shouldBe):
        (test):
        * stress/array-iterators-next-error-messages.js:
        (catch):
        * stress/array-iterators-next-with-call.js:
        * stress/for-of-iteration.js: Added.
        (shouldBe):
        (test1):
        (test2):
        (test3):
        * stress/typedarray-functions-with-neutered.js:
        (checkProtoFunc):

2020-01-08  Saam Barati  <sbarati@apple.com>

        Unreviewed follow up on r254188. I accidentally included the same test
        twice instead of including the two different variants.

        * stress/ai-value-mod-should-result-in-constant-int-where-possible.js:

2020-01-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        Proxy's [[OwnPropertyKeys]] is correct only in PropertyNameMode::StringsAndSymbols
        https://bugs.webkit.org/show_bug.cgi?id=205772

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 12 test cases as passing.

2020-01-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        RegExp.prototype[Symbol.replace] does not support named capture groups
        https://bugs.webkit.org/show_bug.cgi?id=205783

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 6 test cases as passing.

2020-01-07  Saam Barati  <sbarati@apple.com>

        AI rule for ValueMod/ValueDiv produce constants with the wrong format when the result can be an int32
        https://bugs.webkit.org/show_bug.cgi?id=205906
        <rdar://problem/56108519>

        Reviewed by Yusuke Suzuki.

        * stress/ai-value-div-should-result-in-constant-int-where-possible.js: Added.
        (foo.bar.f):
        (foo.):
        (foo):
        * stress/ai-value-mod-should-result-in-constant-int-where-possible.js: Added.
        (foo.bar.f):
        (foo.):
        (foo):

2020-01-06  Alexey Shvayka  <shvaikalesh@gmail.com>

        String.prototype.replace() incorrectly handles named references on RegExp w/o named groups
        https://bugs.webkit.org/show_bug.cgi?id=205785

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-01-06  Alexey Shvayka  <shvaikalesh@gmail.com>

        Proxy's [[OwnPropertyKeys]] is incorrect in DontEnumPropertiesMode::Exclude
        https://bugs.webkit.org/show_bug.cgi?id=203818

        Reviewed by Keith Miller.

        Stress test was failing because "ownKeys" trap didn't return non-configurable
        "prototype" property of Proxy's target, violating an invariant.

        * stress/proxy-get-own-property-names-should-not-clear-previous-results.js:
        * test262/expectations.yaml: Mark 8 test cases as passing.

2020-01-04  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSON.parse should initialize wrapper object with [[DefineOwnProperty]]
        https://bugs.webkit.org/show_bug.cgi?id=205767

        Reviewed by Darin Adler.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2020-01-03  Keith Miller  <keith_miller@apple.com>

        Update test262 tests to commit 157b18d
        https://bugs.webkit.org/show_bug.cgi?id=205741

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        * test262/harness/deepEqual.js:
        (assert.deepEqual):
        (assert.deepEqual.format):
        (deepEqual):
        (compareEquality):
        (compareIf):
        (tryCompareStrictEquality):
        (tryCompareTypeOfEquality):
        (tryCompareToStringTagEquality):
        (isOptional):
        (compareOptionality):
        (isPrimitiveEquatable):
        (comparePrimitiveEquality):
        (isNaNEquatable):
        (compareNaNEquality):
        (isObjectEquatable):
        (compareObjectEquality):
        (isBoxed):
        (isValueOfEquatable):
        (compareValueOfEquality):
        (isToStringEquatable):
        (compareToStringEquality):
        (isArrayLikeEquatable):
        (isStructurallyEquatable):
        (isIterableEquatable):
        (compareIteratorEquality):
        (compareIterableEquality):
        (cacheComparison):
        (fail):
        (setCache):
        (getCache):
        (assert.deepEqual._compare):
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/AggregateError: Added.
        * test262/test/built-ins/AggregateError/errors-iterabletolist-failures.js: Added.
        (case1.get Symbol):
        (case2.get Symbol):
        (case3.Symbol.iterator):
        (case4.Symbol.iterator):
        (case5.Symbol.iterator):
        (case6.Symbol.iterator.return.get next):
        (case6.Symbol.iterator):
        (case7.Symbol.iterator.return.get next):
        (case7.Symbol.iterator):
        (case8.Symbol.iterator):
        (case9.Symbol.iterator):
        (case10.Symbol.iterator):
        (case11.Symbol.iterator.return.next.return.get done):
        (case11.Symbol.iterator):
        * test262/test/built-ins/AggregateError/errors-iterabletolist.js: Added.
        (case1.Symbol.iterator.return.next.return.get value):
        (case1.Symbol.iterator):
        * test262/test/built-ins/AggregateError/length.js: Added.
        * test262/test/built-ins/AggregateError/message-method-prop-cast.js: Added.
        (toString):
        * test262/test/built-ins/AggregateError/message-method-prop.js: Added.
        * test262/test/built-ins/AggregateError/message-tostring-abrupt-symbol.js: Added.
        (case2.Symbol.toPrimitive):
        (case2.toString):
        (case2.valueOf):
        * test262/test/built-ins/AggregateError/message-tostring-abrupt.js: Added.
        (case1.Symbol.toPrimitive):
        (case1.toString):
        (case1.valueOf):
        (case2.toString):
        (case2.valueOf):
        (case3.valueOf):
        * test262/test/built-ins/AggregateError/message-undefined-no-prop.js: Added.
        * test262/test/built-ins/AggregateError/name.js: Added.
        * test262/test/built-ins/AggregateError/newtarget-proto-custom.js: Added.
        (newt.new.Proxy):
        (newt.new.Proxy.get if):
        * test262/test/built-ins/AggregateError/newtarget-proto-fallback.js: Added.
        (ctor):
        (const.value.of.values.get t):
        * test262/test/built-ins/AggregateError/newtarget-proto.js: Added.
        * test262/test/built-ins/AggregateError/prop-desc.js: Added.
        * test262/test/built-ins/AggregateError/proto.js: Added.
        * test262/test/built-ins/AggregateError/prototype: Added.
        * test262/test/built-ins/AggregateError/prototype/constructor.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/invoked-as-accessor.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/invoked-as-func.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/length.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/name.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/prop-desc.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/return-from-iterable-errors.js: Added.
        (errors.Symbol.iterator.return.next.return.get value):
        (errors.Symbol.iterator):
        * test262/test/built-ins/AggregateError/prototype/errors/return-new-array-from-list.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/this-has-no-typedarrayname-internal.js: Added.
        * test262/test/built-ins/AggregateError/prototype/errors/this-is-not-object.js: Added.
        * test262/test/built-ins/AggregateError/prototype/message.js: Added.
        * test262/test/built-ins/AggregateError/prototype/name.js: Added.
        * test262/test/built-ins/AggregateError/prototype/prop-desc.js: Added.
        * test262/test/built-ins/AggregateError/prototype/proto.js: Added.
        * test262/test/built-ins/Array/prototype/copyWithin/coerced-values-start-change-start.js: Added.
        (longDenseArray):
        (shorten):
        * test262/test/built-ins/Array/prototype/copyWithin/coerced-values-start-change-target.js: Added.
        (longDenseArray):
        (shorten):
        * test262/test/built-ins/Array/prototype/flatMap/this-value-ctor-object-species-bad-throws.js:
        * test262/test/built-ins/Atomics/add/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Atomics/and/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Atomics/compareExchange/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Atomics/exchange/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Atomics/or/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Atomics/store/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Atomics/sub/bigint/nonshared-int-views.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/Error/prototype/toString/invalid-receiver.js: Added.
        (Symbol.forEach):
        * test262/test/built-ins/Error/prototype/toString/undefined-props.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-unregister.js:
        (emptyCells):
        (emptyCells.then):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-throws-in-callback.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        (emptyCells):
        (emptyCells.then):
        * test262/test/built-ins/FinalizationGroup/prototype/register/holdings-same-as-target.js:
        * test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined-register-itself.js:
        * test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings-and-target.js:
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/unregister-cleaned-up-cell.js: Added.
        (fg.new.FinalizationGroup):
        (emptyCells):
        (emptyCells.then):
        * test262/test/built-ins/FinalizationGroup/target-not-callable-throws.js:
        * test262/test/built-ins/JSON/parse/reviver-array-get-prop-from-prototype.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-array-non-configurable-prop-create.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-array-non-configurable-prop-delete.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-call-order.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-object-get-prop-from-prototype.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-object-non-configurable-prop-create.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-object-non-configurable-prop-delete.js: Added.
        * test262/test/built-ins/JSON/parse/reviver-wrapper.js: Added.
        * test262/test/built-ins/JSON/stringify/property-order.js: Added.
        * test262/test/built-ins/Object/entries/return-order.js: Added.
        * test262/test/built-ins/Object/freeze/throws-when-false.js: Added.
        (preventExtensions):
        * test262/test/built-ins/Object/getOwnPropertyNames/proxy-invariant-absent-not-configurable-symbol-key.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertyNames/proxy-invariant-duplicate-symbol-entry.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertyNames/proxy-invariant-not-extensible-absent-symbol-key.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertyNames/proxy-invariant-not-extensible-extra-symbol-key.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertySymbols/length.js:
        * test262/test/built-ins/Object/getOwnPropertySymbols/name.js:
        * test262/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js:
        * test262/test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js:
        * test262/test/built-ins/Object/getOwnPropertySymbols/proxy-invariant-absent-not-configurable-string-key.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertySymbols/proxy-invariant-duplicate-string-entry.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertySymbols/proxy-invariant-not-extensible-absent-string-key.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/getOwnPropertySymbols/proxy-invariant-not-extensible-extra-string-key.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/keys/proxy-non-enumerable-prop-invariant-2.js:
        * test262/test/built-ins/Object/keys/proxy-non-enumerable-prop-invariant-3.js: Added.
        (ownKeys):
        * test262/test/built-ins/Object/keys/return-order.js: Added.
        * test262/test/built-ins/Object/preventExtensions/throws-when-false.js: Added.
        (preventExtensions):
        * test262/test/built-ins/Object/prototype/isPrototypeOf/arg-is-proxy.js: Added.
        (handler.allowProxyTraps.getPrototypeOf):
        * test262/test/built-ins/Object/prototype/isPrototypeOf/builtin.js: Added.
        * test262/test/built-ins/Object/prototype/isPrototypeOf/length.js: Added.
        * test262/test/built-ins/Object/prototype/isPrototypeOf/name.js:
        * test262/test/built-ins/Object/prototype/isPrototypeOf/null-this-and-object-arg-throws.js: Added.
        * test262/test/built-ins/Object/prototype/isPrototypeOf/null-this-and-primitive-arg-returns-false.js: Added.
        * test262/test/built-ins/Object/prototype/isPrototypeOf/this-value-is-in-prototype-chain-of-arg.js: Added.
        (USER_FACTORY.this.getName):
        (USER_FACTORY):
        (this.getGrade):
        (FORCEDUSER_FACTORY):
        * test262/test/built-ins/Object/prototype/isPrototypeOf/undefined-this-and-object-arg-throws.js: Added.
        * test262/test/built-ins/Object/prototype/isPrototypeOf/undefined-this-and-primitive-arg-returns-false.js: Added.
        * test262/test/built-ins/Object/seal/throws-when-false.js: Added.
        (preventExtensions):
        * test262/test/built-ins/Object/values/return-order.js: Added.
        * test262/test/built-ins/Proxy/has/call-in-prototype-index.js: Added.
        (handler.allowProxyTraps.has):
        * test262/test/built-ins/Proxy/has/call-in-prototype.js:
        * test262/test/built-ins/Proxy/ownKeys/call-parameters-object-keys.js:
        (handler.ownKeys):
        * test262/test/built-ins/Proxy/set/call-parameters-prototype-index.js: Added.
        * test262/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-element.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-matched.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array-properties.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/RegExp/match-indices/indices-array-unmatched.js:
        * test262/test/built-ins/RegExp/match-indices/indices-array.js:
        * test262/test/built-ins/RegExp/match-indices/indices-groups-object-unmatched.js:
        * test262/test/built-ins/RegExp/match-indices/indices-groups-object.js:
        * test262/test/built-ins/RegExp/match-indices/indices-groups-properties.js:
        * test262/test/built-ins/RegExp/match-indices/indices-property.js:
        * test262/test/built-ins/String/prototype/replaceAll: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0024.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0026.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0027.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x003C.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0060.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024N.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/getSubstitution-0x0024NN.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/length.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/name.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/replaceAll.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-call-abrupt.js: Added.
        (custom):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-call-each-match-position.js: Added.
        (t):
        (replaceValue):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-call-matching-empty.js: Added.
        (t):
        (replaceValue):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-call-skip-no-match.js: Added.
        (replaceValue):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-call-tostring-abrupt.js: Added.
        (custom):
        (symbol):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-fn-skip-toString.js: Added.
        (replaceValue):
        (value):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-tostring-abrupt.js: Added.
        (thisValue.toString):
        (searchValue.toString):
        (replaceValue.toString):
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-value-replaces-string.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/replaceValue-value-tostring.js: Added.
        (replaceValue.Symbol.toPrimitive):
        (replaceValue.toString):
        (replaceValue.valueOf):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-empty-string-this-empty-string.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-empty-string.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-flags-no-g-throws.js: Added.
        (poison.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-flags-null-undefined-throws.js: Added.
        (poison.toString):
        (searchValue.get flags):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-flags-toString-abrupt.js: Added.
        (poison.toString):
        (searchValue.toString):
        (searchValue.flags.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-get-flags-abrupt.js: Added.
        (searchValue.get flags):
        (poison.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-isRegExp-abrupt.js: Added.
        (searchValue.get Symbol):
        (searchValue.toString):
        (poison.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-replace-method-abrupt.js: Added.
        (poison.toString):
        (searchValue.get Symbol):
        (searchValue.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-replacer-RegExp-call-fn.js: Added.
        (RE.prototype.Symbol.replace):
        (RE.prototype.toString):
        (RE):
        (const.t):
        (getFn.return.replaceValueFn):
        (getFn):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-replacer-RegExp-call.js: Added.
        (RE.prototype.Symbol.replace):
        (RE.prototype.toString):
        (RE):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-replacer-before-tostring.js: Added.
        (value):
        (poison.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-replacer-call-abrupt.js: Added.
        (poison.toString):
        (searchValue.Symbol.replace):
        (searchValue.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-replacer-call.js: Added.
        (value):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-tostring-abrupt.js: Added.
        (poison.toString):
        (thisValue.toString):
        (searchValue.toString):
        * test262/test/built-ins/String/prototype/replaceAll/searchValue-tostring-regexp.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/this-is-null-throws.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/this-is-undefined-throws.js: Added.
        * test262/test/built-ins/String/prototype/replaceAll/this-tostring-abrupt.js: Added.
        (poison.toString):
        (thisValue.toString):
        (searchValue.toString):
        * test262/test/built-ins/String/prototype/replaceAll/this-tostring.js: Added.
        (thisValue.Symbol.toPrimitive):
        (thisValue.toString):
        (thisValue.valueOf):
        * test262/test/built-ins/TypedArray/from/mapfn-is-not-callable.js:
        * test262/test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor-length-throws.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/slice/BigInt/speciesctor-get-species-custom-ctor-length.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/slice/speciesctor-get-species-custom-ctor-length-throws.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/slice/speciesctor-get-species-custom-ctor-length.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/from/nan-conversion.js:
        * test262/test/built-ins/TypedArrayConstructors/from/new-instance-from-zero.js:
        * test262/test/built-ins/TypedArrayConstructors/of/BigInt/inherited.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/of/inherited.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/WeakRef/prototype-from-newtarget-abrupt.js:
        * test262/test/harness/deepEqual-array.js:
        * test262/test/harness/deepEqual-circular.js:
        * test262/test/harness/deepEqual-deep.js:
        * test262/test/harness/deepEqual-mapset.js:
        * test262/test/harness/deepEqual-object.js:
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-dateStyle.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default.js: Added.
        (locales.forEach):
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-timeStyle.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle.js:
        * test262/test/intl402/DisplayNames: Added.
        * test262/test/intl402/DisplayNames/ctor-custom-get-prototype-poison-throws.js: Added.
        (custom.new.Proxy.new.Function.get if):
        (custom.new.Proxy.new.Function):
        * test262/test/intl402/DisplayNames/ctor-custom-prototype.js: Added.
        * test262/test/intl402/DisplayNames/ctor-default-prototype.js: Added.
        * test262/test/intl402/DisplayNames/instance-extensible.js: Added.
        * test262/test/intl402/DisplayNames/length.js: Added.
        * test262/test/intl402/DisplayNames/locales-invalid-throws.js: Added.
        * test262/test/intl402/DisplayNames/locales-length-poison-throws.js: Added.
        * test262/test/intl402/DisplayNames/locales-length-tolength-throws.js: Added.
        (locales.length.valueOf):
        (locales.length.Symbol.toPrimitive):
        (locales.length.toString):
        * test262/test/intl402/DisplayNames/locales-symbol-length.js: Added.
        * test262/test/intl402/DisplayNames/name.js: Added.
        * test262/test/intl402/DisplayNames/options-fallback-abrupt-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-fallback-invalid-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-fallback-toString-abrupt-throws.js: Added.
        (options.fallback.toString):
        (options.fallback.valueOf):
        (options.fallback.Symbol.toPrimitive):
        * test262/test/intl402/DisplayNames/options-fallback-valid.js: Added.
        * test262/test/intl402/DisplayNames/options-localeMatcher-abrupt-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-localeMatcher-invalid-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-localeMatcher-toString-abrupt-throws.js: Added.
        (options.localeMatcher.toString):
        (options.localeMatcher.valueOf):
        (options.localeMatcher.Symbol.toPrimitive):
        * test262/test/intl402/DisplayNames/options-localeMatcher-valid.js: Added.
        * test262/test/intl402/DisplayNames/options-null-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-random-properties-unchecked.js: Added.
        * test262/test/intl402/DisplayNames/options-style-abrupt-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-style-invalid-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-style-toString-abrupt-throws.js: Added.
        (options.style.toString):
        (options.style.valueOf):
        (options.style.Symbol.toPrimitive):
        * test262/test/intl402/DisplayNames/options-style-valid.js: Added.
        * test262/test/intl402/DisplayNames/options-type-abrupt-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-type-invalid-throws.js: Added.
        * test262/test/intl402/DisplayNames/options-type-toString-abrupt-throws.js: Added.
        (options.type.toString):
        (options.type.valueOf):
        (options.type.Symbol.toPrimitive):
        * test262/test/intl402/DisplayNames/options-type-valid.js: Added.
        * test262/test/intl402/DisplayNames/prop-desc.js: Added.
        * test262/test/intl402/DisplayNames/proto-from-ctor-realm.js: Added.
        * test262/test/intl402/DisplayNames/proto.js: Added.
        * test262/test/intl402/DisplayNames/prototype: Added.
        * test262/test/intl402/DisplayNames/prototype/Symbol.toStringTag.js: Added.
        * test262/test/intl402/DisplayNames/prototype/prop-desc.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/default-option-values.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/length.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/name.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/option-fallback.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/option-style.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/option-type.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/prop-desc.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/return-object.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/this-not-object-throws.js: Added.
        * test262/test/intl402/DisplayNames/prototype/resolvedOptions/this-object-lacks-internal-throws.js: Added.
        * test262/test/intl402/DisplayNames/undefined-newtarget-throws.js: Added.
        * test262/test/language/destructuring/binding/syntax/property-list-single-name-bindings.js:
        * test262/test/language/expressions/addition/bigint-and-number.js:
        * test262/test/language/expressions/addition/bigint-arithmetic.js:
        * test262/test/language/expressions/addition/bigint-errors.js:
        * test262/test/language/expressions/addition/bigint-toprimitive.js:
        * test262/test/language/expressions/addition/bigint-wrapped-values.js:
        * test262/test/language/expressions/arrow-function/eval-var-scope-syntax-err.js: Added.
        (f.a.eval):
        * test262/test/language/expressions/arrow-function/scope-param-elem-var-close.js:
        * test262/test/language/expressions/arrow-function/scope-param-elem-var-open.js:
        * test262/test/language/expressions/arrow-function/scope-param-rest-elem-var-close.js:
        * test262/test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js:
        * test262/test/language/expressions/async-arrow-function/eval-var-scope-syntax-err.js: Added.
        (f.async a):
        (SyntaxError.then):
        * test262/test/language/expressions/async-function/named-eval-var-scope-syntax-err.js: Added.
        (f.async f):
        (f):
        * test262/test/language/expressions/async-function/nameless-eval-var-scope-syntax-err.js: Added.
        * test262/test/language/expressions/async-generator/eval-var-scope-syntax-err.js: Added.
        * test262/test/language/expressions/async-generator/named-eval-var-scope-syntax-err.js: Added.
        (f.async g):
        (f):
        * test262/test/language/expressions/bitwise-and/bigint-and-number.js:
        * test262/test/language/expressions/bitwise-and/bigint-errors.js:
        * test262/test/language/expressions/bitwise-and/bigint-non-primitive.js:
        * test262/test/language/expressions/bitwise-and/bigint-toprimitive.js:
        * test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js:
        * test262/test/language/expressions/bitwise-not/bigint-non-primitive.js:
        * test262/test/language/expressions/bitwise-or/bigint-and-number.js:
        * test262/test/language/expressions/bitwise-or/bigint-errors.js:
        * test262/test/language/expressions/bitwise-or/bigint-non-primitive.js:
        * test262/test/language/expressions/bitwise-or/bigint-toprimitive.js:
        * test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js:
        * test262/test/language/expressions/bitwise-xor/bigint-and-number.js:
        * test262/test/language/expressions/bitwise-xor/bigint-errors.js:
        * test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js:
        * test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js:
        * test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js:
        * test262/test/language/expressions/class/async-gen-method-static/eval-var-scope-syntax-err.js: Added.
        (C):
        * test262/test/language/expressions/class/async-gen-method/eval-var-scope-syntax-err.js: Added.
        (C):
        * test262/test/language/expressions/class/async-method-static/eval-var-scope-syntax-err.js: Added.
        (C):
        (then):
        * test262/test/language/expressions/class/async-method/eval-var-scope-syntax-err.js: Added.
        (C):
        (SyntaxError.then):
        * test262/test/language/expressions/class/elements/syntax/early-errors/grammar-private-field-optional-chaining.js: Added.
        (C.prototype.access):
        * test262/test/language/expressions/class/gen-method-static/eval-var-scope-syntax-err.js: Added.
        (C):
        * test262/test/language/expressions/class/gen-method/eval-var-scope-syntax-err.js: Added.
        (C):
        * test262/test/language/expressions/class/method-static/eval-var-scope-syntax-err.js: Added.
        (C):
        * test262/test/language/expressions/class/method/eval-var-scope-syntax-err.js: Added.
        (C):
        * test262/test/language/expressions/coalesce/cannot-chain-head-with-logical-and.js:
        * test262/test/language/expressions/coalesce/cannot-chain-head-with-logical-or.js:
        * test262/test/language/expressions/coalesce/cannot-chain-tail-with-logical-and.js:
        * test262/test/language/expressions/coalesce/cannot-chain-tail-with-logical-or.js:
        * test262/test/language/expressions/delete/super-property.js:
        (C):
        * test262/test/language/expressions/division/bigint-and-number.js:
        * test262/test/language/expressions/division/bigint-arithmetic.js:
        * test262/test/language/expressions/division/bigint-complex-infinity.js:
        * test262/test/language/expressions/division/bigint-errors.js:
        * test262/test/language/expressions/division/bigint-toprimitive.js:
        * test262/test/language/expressions/division/bigint-wrapped-values.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-bigint.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-boolean.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-number.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-object.js:
        * test262/test/language/expressions/does-not-equals/bigint-and-string.js:
        * test262/test/language/expressions/equals/bigint-and-bigint.js:
        * test262/test/language/expressions/equals/bigint-and-boolean.js:
        * test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js:
        * test262/test/language/expressions/equals/bigint-and-non-finite.js:
        * test262/test/language/expressions/equals/bigint-and-number-extremes.js:
        * test262/test/language/expressions/equals/bigint-and-number.js:
        * test262/test/language/expressions/equals/bigint-and-object.js:
        * test262/test/language/expressions/equals/bigint-and-string.js:
        * test262/test/language/expressions/exponentiation/bigint-and-number.js:
        * test262/test/language/expressions/exponentiation/bigint-arithmetic.js:
        * test262/test/language/expressions/exponentiation/bigint-errors.js:
        * test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js:
        * test262/test/language/expressions/exponentiation/bigint-toprimitive.js:
        * test262/test/language/expressions/exponentiation/bigint-wrapped-values.js:
        * test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js:
        * test262/test/language/expressions/function/eval-var-scope-syntax-err.js: Added.
        (f):
        * test262/test/language/expressions/function/scope-param-elem-var-close.js:
        * test262/test/language/expressions/function/scope-param-elem-var-open.js:
        * test262/test/language/expressions/function/scope-param-rest-elem-var-close.js:
        * test262/test/language/expressions/function/scope-param-rest-elem-var-open.js:
        * test262/test/language/expressions/generators/eval-var-scope-syntax-err.js: Added.
        (f):
        * test262/test/language/expressions/generators/scope-param-elem-var-close.js:
        * test262/test/language/expressions/generators/scope-param-elem-var-open.js:
        * test262/test/language/expressions/generators/scope-param-rest-elem-var-close.js:
        * test262/test/language/expressions/generators/scope-param-rest-elem-var-open.js:
        * test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js:
        * test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js:
        * test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js:
        * test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js:
        * test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js:
        * test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js:
        * test262/test/language/expressions/greater-than/bigint-and-bigint.js:
        * test262/test/language/expressions/greater-than/bigint-and-boolean.js:
        * test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js:
        * test262/test/language/expressions/greater-than/bigint-and-non-finite.js:
        * test262/test/language/expressions/greater-than/bigint-and-number-extremes.js:
        * test262/test/language/expressions/greater-than/bigint-and-number.js:
        * test262/test/language/expressions/greater-than/bigint-and-symbol.js:
        * test262/test/language/expressions/left-shift/bigint-and-number.js:
        * test262/test/language/expressions/left-shift/bigint-errors.js:
        * test262/test/language/expressions/left-shift/bigint-non-primitive.js:
        * test262/test/language/expressions/left-shift/bigint-toprimitive.js:
        * test262/test/language/expressions/left-shift/bigint-wrapped-values.js:
        * test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js:
        * test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js:
        * test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js:
        * test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js:
        * test262/test/language/expressions/less-than-or-equal/bigint-and-number.js:
        * test262/test/language/expressions/less-than-or-equal/bigint-and-string.js:
        * test262/test/language/expressions/less-than/bigint-and-bigint.js:
        * test262/test/language/expressions/less-than/bigint-and-boolean.js:
        * test262/test/language/expressions/less-than/bigint-and-incomparable-string.js:
        * test262/test/language/expressions/less-than/bigint-and-non-finite.js:
        * test262/test/language/expressions/less-than/bigint-and-number-extremes.js:
        * test262/test/language/expressions/less-than/bigint-and-number.js:
        * test262/test/language/expressions/modulus/bigint-and-number.js:
        * test262/test/language/expressions/modulus/bigint-arithmetic.js:
        * test262/test/language/expressions/modulus/bigint-errors.js:
        * test262/test/language/expressions/modulus/bigint-modulo-zero.js:
        * test262/test/language/expressions/modulus/bigint-toprimitive.js:
        * test262/test/language/expressions/modulus/bigint-wrapped-values.js:
        * test262/test/language/expressions/multiplication/bigint-and-number.js:
        * test262/test/language/expressions/multiplication/bigint-arithmetic.js:
        * test262/test/language/expressions/multiplication/bigint-errors.js:
        * test262/test/language/expressions/multiplication/bigint-toprimitive.js:
        * test262/test/language/expressions/multiplication/bigint-wrapped-values.js:
        * test262/test/language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js: Added.
        (obj.async method):
        * test262/test/language/expressions/object/method-definition/async-meth-eval-var-scope-syntax-err.js: Added.
        (obj.async method):
        (SyntaxError.then):
        * test262/test/language/expressions/object/method-definition/gen-meth-eval-var-scope-syntax-err.js: Added.
        (obj.method.a.eval):
        * test262/test/language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js: Added.
        (obj.method.a.eval):
        * test262/test/language/expressions/object/scope-gen-meth-param-elem-var-close.js:
        * test262/test/language/expressions/object/scope-gen-meth-param-elem-var-open.js:
        * test262/test/language/expressions/object/scope-gen-meth-param-rest-elem-var-close.js:
        * test262/test/language/expressions/object/scope-gen-meth-param-rest-elem-var-open.js:
        * test262/test/language/expressions/object/scope-meth-param-elem-var-close.js:
        * test262/test/language/expressions/object/scope-meth-param-elem-var-open.js:
        * test262/test/language/expressions/object/scope-meth-param-rest-elem-var-close.js:
        * test262/test/language/expressions/object/scope-meth-param-rest-elem-var-open.js:
        * test262/test/language/expressions/optional-chaining/iteration-statement-do.js: Added.
        * test262/test/language/expressions/optional-chaining/iteration-statement-for-await-of.js: Added.
        (const.obj.iterable.Symbol.asyncIterator):
        (async checkAssertions):
        * test262/test/language/expressions/optional-chaining/iteration-statement-for-in.js: Added.
        * test262/test/language/expressions/optional-chaining/iteration-statement-for-of-type-error.js: Added.
        * test262/test/language/expressions/optional-chaining/iteration-statement-for.js: Added.
        (const.obj3.get a):
        * test262/test/language/expressions/optional-chaining/iteration-statement-while.js: Added.
        * test262/test/language/expressions/optional-chaining/new-target-optional-call.js: Added.
        (const.newTargetContext):
        (Base):
        (Foo):
        * test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js: Added.
        (const.a.b):
        * test262/test/language/expressions/optional-chaining/super-property-optional-call.js: Added.
        (Base.prototype.method):
        (Base):
        (Foo.prototype.method):
        (Foo):
        * test262/test/language/expressions/right-shift/bigint-and-number.js:
        * test262/test/language/expressions/right-shift/bigint-errors.js:
        * test262/test/language/expressions/right-shift/bigint-non-primitive.js:
        * test262/test/language/expressions/right-shift/bigint-toprimitive.js:
        * test262/test/language/expressions/right-shift/bigint-wrapped-values.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js:
        * test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js:
        * test262/test/language/expressions/strict-equals/bigint-and-bigint.js:
        * test262/test/language/expressions/strict-equals/bigint-and-boolean.js:
        * test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js:
        * test262/test/language/expressions/strict-equals/bigint-and-non-finite.js:
        * test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js:
        * test262/test/language/expressions/strict-equals/bigint-and-number.js:
        * test262/test/language/expressions/strict-equals/bigint-and-object.js:
        * test262/test/language/expressions/strict-equals/bigint-and-string.js:
        * test262/test/language/expressions/subtraction/bigint-and-number.js:
        * test262/test/language/expressions/subtraction/bigint-arithmetic.js:
        * test262/test/language/expressions/subtraction/bigint-errors.js:
        * test262/test/language/expressions/subtraction/bigint-toprimitive.js:
        * test262/test/language/expressions/subtraction/bigint-wrapped-values.js:
        * test262/test/language/expressions/typeof/proxy.js: Added.
        (assert.sameValue.typeof.new.Proxy):
        (const.rp2.Proxy.revocable):
        * test262/test/language/expressions/unary-minus/bigint-non-primitive.js:
        * test262/test/language/expressions/unary-plus/bigint-throws.js:
        * test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js:
        * test262/test/language/expressions/unsigned-right-shift/bigint-errors.js:
        * test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js:
        * test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js:
        * test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js:
        * test262/test/language/function-code/eval-param-env-with-computed-key.js:
        * test262/test/language/function-code/eval-param-env-with-prop-initializer.js:
        * test262/test/language/statements/async-function/eval-var-scope-syntax-err.js: Added.
        (async f):
        (SyntaxError.then):
        * test262/test/language/statements/async-generator/eval-var-scope-syntax-err.js: Added.
        (async f):
        * test262/test/language/statements/class/async-gen-method-static/eval-var-scope-syntax-err.js: Added.
        (C.async method):
        (C):
        * test262/test/language/statements/class/async-gen-method/eval-var-scope-syntax-err.js: Added.
        (C.prototype.async method):
        (C):
        * test262/test/language/statements/class/async-method-static/eval-var-scope-syntax-err.js: Added.
        (C.async method):
        (C):
        (SyntaxError.then):
        * test262/test/language/statements/class/async-method/eval-var-scope-syntax-err.js: Added.
        (C.prototype.async method):
        (C):
        (SyntaxError.then):
        * test262/test/language/statements/class/definition/constructable-but-no-prototype.js:
        * test262/test/language/statements/class/definition/constructor-strict-by-default.js:
        * test262/test/language/statements/class/definition/getters-restricted-ids.js:
        * test262/test/language/statements/class/definition/implicit-constructor.js:
        * test262/test/language/statements/class/definition/invalid-extends.js:
        * test262/test/language/statements/class/definition/methods-named-eval-arguments.js:
        * test262/test/language/statements/class/definition/prototype-getter.js:
        * test262/test/language/statements/class/definition/prototype-property.js:
        * test262/test/language/statements/class/definition/setters-restricted-ids.js:
        * test262/test/language/statements/class/definition/side-effects-in-extends.js:
        * test262/test/language/statements/class/definition/side-effects-in-property-define.js:
        * test262/test/language/statements/class/definition/this-access-restriction-2.js:
        * test262/test/language/statements/class/definition/this-access-restriction.js:
        * test262/test/language/statements/class/definition/this-check-ordering.js:
        * test262/test/language/statements/class/elements/syntax/early-errors/grammar-private-field-optional-chaining.js: Added.
        (C.prototype.access):
        (C):
        * test262/test/language/statements/class/gen-method-static/eval-var-scope-syntax-err.js: Added.
        (C.method):
        (C):
        * test262/test/language/statements/class/gen-method/eval-var-scope-syntax-err.js: Added.
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/method-static/eval-var-scope-syntax-err.js: Added.
        (C.method):
        (C):
        * test262/test/language/statements/class/method/eval-var-scope-syntax-err.js: Added.
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/name-binding/basic.js:
        * test262/test/language/statements/class/subclass/binding.js:
        * test262/test/language/statements/class/subclass/builtin-objects/RegExp/lastIndex.js:
        * test262/test/language/statements/class/subclass/builtin-objects/String/length.js:
        * test262/test/language/statements/class/subclass/builtin-objects/WeakMap/regular-subclassing.js:
        * test262/test/language/statements/class/subclass/builtin-objects/WeakMap/super-must-be-called.js:
        * test262/test/language/statements/class/subclass/builtin-objects/WeakSet/regular-subclassing.js:
        * test262/test/language/statements/class/subclass/builtin-objects/WeakSet/super-must-be-called.js:
        * test262/test/language/statements/class/subclass/builtins.js:
        * test262/test/language/statements/class/subclass/default-constructor-spread-override.js:
        * test262/test/language/statements/for-in/identifier-let-allowed-as-lefthandside-expression-not-strict.js:
        * test262/test/language/statements/for-in/order-enumerable-shadowed.js: Added.
        * test262/test/language/statements/for-in/order-property-added.js: Added.
        * test262/test/language/statements/for-in/order-property-on-prototype.js: Added.
        * test262/test/language/statements/for-in/order-simple-object.js: Added.
        * test262/test/language/statements/function/eval-var-scope-syntax-err.js: Added.
        (f):
        * test262/test/language/statements/function/scope-param-elem-var-close.js:
        * test262/test/language/statements/function/scope-param-elem-var-open.js:
        * test262/test/language/statements/function/scope-param-rest-elem-var-close.js:
        * test262/test/language/statements/function/scope-param-rest-elem-var-open.js:
        * test262/test/language/statements/generators/eval-var-scope-syntax-err.js: Added.
        (f):
        * test262/test/language/statements/generators/scope-param-elem-var-close.js:
        * test262/test/language/statements/generators/scope-param-elem-var-open.js:
        * test262/test/language/statements/generators/scope-param-rest-elem-var-close.js:
        * test262/test/language/statements/generators/scope-param-rest-elem-var-open.js:
        * test262/test262-Revision.txt:

2020-01-03  Saam Barati  <sbarati@apple.com>

        B3::ReduceLoopStrength should not do range based iteration on a vector it's mutating
        https://bugs.webkit.org/show_bug.cgi?id=205703
        <rdar://problem/56459483>

        Reviewed by Mark Lam.

        * stress/dont-range-based-iterate-vector-that-is-mutated.js: Added.
        (foo):

2020-01-03  Saam Barati  <sbarati@apple.com>

        AI rule for PutById can only observe transitions when it watches the condition
        https://bugs.webkit.org/show_bug.cgi?id=205697
        <rdar://problem/56814254>

        Reviewed by Yusuke Suzuki.

        * stress/only-transition-structures-for-put-by-id-in-AI-if-watchable.js: Added.

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

        REGRESSION (r253867): Six test262 tests broken
        https://bugs.webkit.org/show_bug.cgi?id=205583

        Reviewed by Mark Lam.

        * stress/bound-function-empty-name.js: Added.
        (shouldBe):

2019-12-23  Keith Miller  <keith_miller@apple.com>

        DFG/FTL should be able to exit to the middle of a bytecode
        https://bugs.webkit.org/show_bug.cgi?id=205232

        Reviewed by Saam Barati.

        * stress/apply-osr-exit-should-get-length-once-exceptions-occasionally.js: Added.
        (expectedArgCount):
        (callee):
        (test):
        (let.array.get length):
        * stress/apply-osr-exit-should-get-length-once.js: Added.
        (expectedArgCount):
        (callee):
        (test):
        (let.array.get length):
        * stress/load-varargs-then-inlined-call-and-exit-strict.js:
        (checkEqual):
        * stress/recursive-tail-call-with-different-argument-count.js:
        * stress/rest-varargs-osr-exit-to-checkpoint.js: Added.
        (foo):
        (bar):

2019-12-23  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Wasm OSR entry should capture top-most enclosing-stack
        https://bugs.webkit.org/show_bug.cgi?id=205571

        Reviewed by Keith Miller.

        * wasm/stress/top-most-enclosing-stack.js: Added.

2019-12-21  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Improve our bound function implementation
        https://bugs.webkit.org/show_bug.cgi?id=205327

        Reviewed by Keith Miller.

        * microbenchmarks/function-bind-no-inlining-repeat-call.js: Added.
        (assert):
        (test):
        (test2):
        (foo):
        (let.start.Date.now):
        * stress/bind-args.js: Added.
        (shouldBe):
        (test):
        (test2):

2019-12-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] 8Bit JSRopeString can contain 16Bit string in its rope
        https://bugs.webkit.org/show_bug.cgi?id=205323

        Reviewed by Mark Lam.

        * stress/8bit-resolve-can-encounter-16bit-string.js: Added.
        (foo):

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

        [JSC] Remove JSFixedArray, and use JSImmutableButterfly instead
        https://bugs.webkit.org/show_bug.cgi?id=204402

        Reviewed by Mark Lam.

        * stress/new-array-with-spread-cow-double.js: Added.
        (shouldBe):
        (shouldBeArray):
        (test):
        * stress/new-array-with-spread-cow-int.js: Added.
        (shouldBe):
        (shouldBeArray):
        (test):
        * stress/new-array-with-spread-cow.js: Added.
        (shouldBe):
        (shouldBeArray):
        (test):

2019-12-13  Mark Lam  <mark.lam@apple.com>

        Fix bad exception assertion in ExceptionHelpers.cpp's createError().
        https://bugs.webkit.org/show_bug.cgi?id=205230
        <rdar://problem/57875688>

        Reviewed by Yusuke Suzuki.

        * stress/test-exception-assert-in-ExceptionHelpers-createError.js: Added.

2019-12-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Wasm init-expr should reject mutable globals
        https://bugs.webkit.org/show_bug.cgi?id=205191

        Reviewed by Mark Lam.

        * wasm/js-api/global-error.js:
        (assert.throws.new.WebAssembly.Module.bin):
        (new.WebAssembly.Module): Deleted.
        (assert.throws): Deleted.
        (new.Number): Deleted.

2019-12-12  Mark Lam  <mark.lam@apple.com>

        Fix missing exception in JSValue::toWTFStringSlowCase().
        https://bugs.webkit.org/show_bug.cgi?id=205176
        <rdar://problem/57871899>

        Reviewed by Yusuke Suzuki.

        * stress/missing-exception-check-in-JSValue-toWTFStringSlowCase.js: Added.

2019-12-12  Mark Lam  <mark.lam@apple.com>

        Fix missing exception check in JSON Stringifier's gap function.
        https://bugs.webkit.org/show_bug.cgi?id=205171
        <rdar://problem/57871842>

        Reviewed by Yusuke Suzuki.

        * stress/missing-exception-check-in-json-stringifier-gap.js: Added.

2019-12-12  Mark Lam  <mark.lam@apple.com>

        DFG and FTL expects String.prototype to not qualify for StringObjectUse.
        https://bugs.webkit.org/show_bug.cgi?id=205147
        <rdar://problem/57748888>

        Reviewed by Saam Barati.

        * stress/ftl-expects-string-prototype-to-not-be-StringObjectUse.js: Added.

2019-12-11  Keith Miller  <keith_miller@apple.com>

        Add test for osr exiting with interpreter on the stack
        https://bugs.webkit.org/show_bug.cgi?id=205124

        Reviewed by Mark Lam.

        I forgot to add this test before.

        * stress/osr-exit-with-interpreter-on-stack.js: Added.
        (foo):

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

        [JSC] Adhocly created CallLinkInfo in GetterSetterAccess should be owned by GCAwareJITStubRoutine
        https://bugs.webkit.org/show_bug.cgi?id=204876

        Reviewed by Saam Barati.

        * stress/code-emitted-by-getter-setter-access-case-should-hold-ownership-of-call-link-info.js: Added.
        (func):

2019-12-09  Tadeu Zagallo  <tzagallo@apple.com>

        REGRESSION(r253140): WebAssembly validation should check for unmatched else before calling addElse/addElseToUnreachable
        https://bugs.webkit.org/show_bug.cgi?id=205022
        <rdar://problem/57748159>

        Reviewed by Saam Barati.

        * wasm/regress/unmatched-else.js: Added.
        (catch):

2019-12-08  Tadeu Zagallo  <tzagallo@apple.com>

        [WebAssembly] Fix LLIntGenerator's checkConsistency contract
        https://bugs.webkit.org/show_bug.cgi?id=204998
        <rdar://problem/57733405>

        Reviewed by Mark Lam.

        * wasm/regress/stack-consistency.js: Added.

2019-12-08  Caio Lima  <ticaiolima@gmail.com>

        [ARMv7] Skip flaky stress tests
        https://bugs.webkit.org/show_bug.cgi?id=204996

        Unreviewed gardening.

        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:
        * stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js:

2019-12-07  Mark Lam  <mark.lam@apple.com>

        Object.prototype.isPrototypeOf() should check if the passed in value is a non-object first.
        https://bugs.webkit.org/show_bug.cgi?id=204971
        <rdar://problem/57730080>

        Reviewed by Saam Barati.

        * stress/object-prototype-isPrototypeOf-should-check-for-non-object-first.js: Added.

2019-12-06  Mark Lam  <mark.lam@apple.com>

        The compiler thread should not adjust Identifier refCounts.
        https://bugs.webkit.org/show_bug.cgi?id=204919
        <rdar://problem/57426861>

        Reviewed by Saam Barati.

        * stress/compiler-thread-should-not-ref-identifiers.js: Added.

2019-12-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] AI should convert IsCellWithType to constant when Structure set is finite
        https://bugs.webkit.org/show_bug.cgi?id=204141

        Reviewed by Mark Lam.

        * stress/generator-cell-with-type.js: Added.
        (shouldBe):
        (shouldThrow):
        (test):
        (i.shouldThrow):
        * stress/is-cell-with-type-should-check-non-cell-cases.js: Added.
        (getter):
        (foo):

2019-12-04  Mark Lam  <mark.lam@apple.com>

        Fix missing exception check in ArrayPrototype's fastJoin().
        https://bugs.webkit.org/show_bug.cgi?id=204868
        <rdar://problem/57516684>

        Reviewed by Saam Barati.

        * stress/missing-exception-check-in-array-prototype-fastJoin.js: Added.

2019-12-04  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, rolling out r252416, vimeo does not work
        https://bugs.webkit.org/show_bug.cgi?id=204141

        * stress/generator-cell-with-type.js: Removed.

2019-12-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSWebAssemblyGlobal creation should have exception check
        https://bugs.webkit.org/show_bug.cgi?id=204857
        <rdar://problem/57618579>

        Reviewed by Mark Lam.

        * wasm/regress/wasm-global-creation-can-throw-an-exception.js: Added.

2019-12-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Update Wasm spec-tests
        https://bugs.webkit.org/show_bug.cgi?id=204844

        Reviewed by Keith Miller.

        To get broader coverage, we update Wasm spec-tests to the latest one[1].

        [1]: 3e5fdc6b51ca2cde537bb8ecb1ba25c1ee366833

        * wasm.yaml:
        * wasm/spec-tests/address.wast.js:
        * wasm/spec-tests/align.wast.js:
        * wasm/spec-tests/binary-leb128.wast.js: Added.
        * wasm/spec-tests/binary.wast.js:
        * wasm/spec-tests/block.wast.js:
        * wasm/spec-tests/br.wast.js:
        * wasm/spec-tests/br_if.wast.js:
        * wasm/spec-tests/br_table.wast.js:
        * wasm/spec-tests/call_indirect.wast.js:
        * wasm/spec-tests/const.wast.js:
        * wasm/spec-tests/conversions.wast.js:
        * wasm/spec-tests/custom.wast.js: Added.
        * wasm/spec-tests/data.wast.js: Added.
        * wasm/spec-tests/elem.wast.js: Added.
        * wasm/spec-tests/endianness.wast.js:
        * wasm/spec-tests/f32.wast.js:
        * wasm/spec-tests/f32_bitwise.wast.js:
        * wasm/spec-tests/f32_cmp.wast.js:
        * wasm/spec-tests/f64.wast.js:
        * wasm/spec-tests/f64_bitwise.wast.js:
        * wasm/spec-tests/f64_cmp.wast.js:
        * wasm/spec-tests/fac.wast.js:
        * wasm/spec-tests/float_exprs.wast.js:
        * wasm/spec-tests/float_literals.wast.js:
        * wasm/spec-tests/float_memory.wast.js:
        * wasm/spec-tests/func.wast.js:
        * wasm/spec-tests/func_ptrs.wast.js:
        * wasm/spec-tests/i32.wast.js:
        * wasm/spec-tests/i64.wast.js:
        * wasm/spec-tests/imports.wast.js:
        * wasm/spec-tests/int_exprs.wast.js:
        * wasm/spec-tests/int_literals.wast.js:
        * wasm/spec-tests/labels.wast.js:
        * wasm/spec-tests/left-to-right.wast.js:
        * wasm/spec-tests/load.wast.js: Added.
        * wasm/spec-tests/local_get.wast.js: Added.
        * wasm/spec-tests/local_set.wast.js: Added.
        * wasm/spec-tests/local_tee.wast.js: Added.
        * wasm/spec-tests/loop.wast.js:
        * wasm/spec-tests/memory_grow.wast.js: Added.
        * wasm/spec-tests/memory_size.wast.js: Added.
        * wasm/spec-tests/memory_trap.wast.js:
        * wasm/spec-tests/names.wast.js:
        * wasm/spec-tests/nop.wast.js:
        * wasm/spec-tests/return.wast.js:
        * wasm/spec-tests/select.wast.js:
        * wasm/spec-tests/stack.wast.js:
        * wasm/spec-tests/start.wast.js:
        * wasm/spec-tests/store.wast.js: Added.
        * wasm/spec-tests/switch.wast.js:
        * wasm/spec-tests/traps.wast.js:
        * wasm/spec-tests/type.wast.js:
        * wasm/spec-tests/unreachable.wast.js:
        * wasm/spec-tests/unreached-invalid.wast.js:
        * wasm/spec-tests/unwind.wast.js:
        * wasm/spec-tests/utf8-custom-section-id.wast.js:
        * wasm/spec-tests/utf8-import-field.wast.js:
        * wasm/spec-tests/utf8-import-module.wast.js:
        * wasm/spec-tests/utf8-invalid-encoding.wast.js: Added.

2019-12-03  Yusuke Suzuki  <ysuzuki@apple.com>

        Adopt the new WebAssembly.Global system
        https://bugs.webkit.org/show_bug.cgi?id=186552

        Reviewed by Keith Miller.

        1. Update spec-harness to accept newer tests. And we update several tests that does not work with the old harness.
        2. Add WebAssembly.Global tests.

        * wasm/js-api/global-error.js:
        (assert.throws.new.WebAssembly.Module.bin):
        (new.WebAssembly.Module):
        (assert.throws):
        * wasm/js-api/global-external-init-from-import.js:
        * wasm/js-api/globals-export.js:
        * wasm/modules/js-wasm-global-namespace.js:
        (assert.throws):
        * wasm/modules/js-wasm-global.js:
        (assert.throws):
        * wasm/modules/wasm-import-wasm-export-i64-error.js:
        * wasm/references/anyref_globals.js:
        * wasm/references/func_ref.js:
        (assert.eq.instance.exports.fix):
        * wasm/spec-harness.js:
        (getGlobal):
        (let.console.log):
        * wasm/spec-harness/sync_index.js: Renamed from JSTests/wasm/spec-harness/index.js.
        (reinitializeRegistry.let.handler.get return):
        (module):
        * wasm/spec-tests/call.wast.js:
        * wasm/spec-tests/exports.wast.js:
        * wasm/spec-tests/globals.wast.js:
        * wasm/spec-tests/if.wast.js:
        * wasm/spec-tests/imports.wast.js:
        * wasm/spec-tests/linking.wast.js:
        * wasm/spec-tests/memory.wast.js:
        * wasm/stress/immutable-globals.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq.instance.exports.getI32):
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):
        * wasm/stress/mutable-globals-cross.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.instance1):
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.instance2):
        * wasm/stress/mutable-globals.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.instance.exports.setI32AsI64):

2019-12-03  Christopher Reid  <chris.reid@sony.com>

        Regular expression hangs in Safari only
        https://bugs.webkit.org/show_bug.cgi?id=202882
        <rdar://problem/56236654>

        Reviewed by Yusuke Suzuki.

        * stress/regress-202882.js: Added.

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

        PropertySlot should not have Customs have a PropertyOffset of zero
        https://bugs.webkit.org/show_bug.cgi?id=204566
        <rdar://problem/57466781>

        Reviewed by Keith Miller.

        * stress/cacheable-custom-accessor-should-not-have-property-offset.js: Added.

2019-12-02  Mark Lam  <mark.lam@apple.com>

        mozilla-tests.yaml/js1_5/Array/regress-101964.js is frequently failing on JSC EWS bots.
        https://bugs.webkit.org/show_bug.cgi?id=200789
        <rdar://problem/54361916>

        Reviewed by Keith Miller.

        The prevailing theory is that this test is being pre-empted and not getting the
        CPU time it needs to complete.  As a result, the wall clock time period for
        running the test exceeds the expected time.  This patch tests this theory by
        changing the time measurement to use CPU time instead.

        * mozilla/js1_5/Array/regress-101964.js:

2019-12-01  Caio Lima  <ticaiolima@gmail.com>

        [JSC][MIPS] CallFrame is being clobbered on InternalFunction execution
        https://bugs.webkit.org/show_bug.cgi?id=203739

        Reviewed by Saam Barati.

        * stress/has-instance-exception-check.js:
        * stress/regress-176485.js:

2019-11-30  Ross Kirsling  <ross.kirsling@sony.com>

        test262-runner should dump YAML with correct encoding
        https://bugs.webkit.org/show_bug.cgi?id=204493

        Reviewed by Saam Barati.

        * test262/expectations.yaml:
        Fix double-encoding of test failure output.

2019-11-23  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] GetSubstitution is performed incorrectly via RegExp.prototype[@@replace]
        https://bugs.webkit.org/show_bug.cgi?id=204490

        Reviewed by Mark Lam.

        * stress/replace-indexed-backreferences.js: Added.
        * test262/expectations.yaml: Mark four test cases as passing.

2019-11-22  Tadeu Zagallo  <tzagallo@apple.com>

        [WebAssembly] Improve Wasm::LLIntGenerator
        https://bugs.webkit.org/show_bug.cgi?id=204092

        Reviewed by Saam Barati.

        * wasm/stress/set-local-enclosed-stack.js: Added.
        (assert.eq.instance.exports.foo):
        (assert.eq):

2019-11-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG terminal's liveness should respect caller's opcodeID
        https://bugs.webkit.org/show_bug.cgi?id=204317

        Reviewed by Saam Barati.

        * stress/call-var-args-phantom-arguments-handler-strict.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/call-var-args-phantom-arguments-handler.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/call-var-args-phantom-arguments-strict.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/call-var-args-phantom-arguments.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/derived-class-construct-varargs.js: Added.
        (shouldThrow):
        (B):
        * stress/tail-call-var-args-phantom-arguments-handler-strict.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/tail-call-var-args-phantom-arguments-handler.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/tail-call-var-args-phantom-arguments-strict.js: Added.
        (shouldBe):
        (inlined):
        (test):
        * stress/tail-call-var-args-phantom-arguments.js: Added.
        (shouldBe):
        (inlined):
        (test):

2019-11-22  Guillaume Emont  <guijemont@igalia.com>

        Skip tests that fail on arm and mips devices
        https://bugs.webkit.org/show_bug.cgi?id=204522

        Unreviewed gardening.


        * stress/generator-cell-with-type.js:
        * stress/stack-overflow-in-yarr-byteCompile.js:
        * stress/toctou-having-a-bad-time-new-array.js:

2019-11-21  Mark Lam  <mark.lam@apple.com>

        replaceUsingStringSearch() should not use CachedCall with host functions.
        https://bugs.webkit.org/show_bug.cgi?id=204494
        <rdar://problem/57421078>

        Reviewed by Ross Kirsling.

        * stress/string-replaceAll-2.js:

2019-11-21  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed test262 gardening following r252680.

        * test262/expectations.yaml:
        Mark eight test cases as passing.

2019-11-21  Saam Barati  <sbarati@apple.com>

        GetByStatus should not say it took the slow path for multiple identifiers and should have a way to indicate if the StructureStubInfo it saw took the slow path
        https://bugs.webkit.org/show_bug.cgi?id=204435

        Reviewed by Tadeu Zagallo.

        * microbenchmarks/get-by-val-polymorphic-ic-1.js: Added.
        (assert):
        (test1.foo):
        (test1):
        * microbenchmarks/get-by-val-polymorphic-ic-2.js: Added.
        (assert):
        (test2.foo):
        (test2):
        * microbenchmarks/get-by-val-polymorphic-ic-3.js: Added.
        (assert):
        (test3.foo):
        (test3.args):
        (test3):
        * microbenchmarks/get-by-val-polymorphic-ic-4.js: Added.
        (assert):
        (test4.foo):
        (test4.capture):
        (test4.args):
        (test4):
        * microbenchmarks/get-by-val-polymorphic-ic-5.js: Added.
        (assert):
        (test5.foo):
        (test5.capture):
        (test5.args):
        (test5):
        * microbenchmarks/get-by-val-polymorphic-ic-6.js: Added.
        (assert):
        (test6.foo):
        (test6.capture):
        (test6.args):
        (test6):
        * microbenchmarks/get-by-val-polymorphic-ic-7.js: Added.
        (assert):
        (test7.foo):
        (test7):
        * microbenchmarks/get-by-val-polymorphic-ic-8.js: Added.
        (assert):
        (test7.foo):
        (test7):
        * microbenchmarks/get-by-val-polymorphic-ic-9.js: Added.
        (assert):
        (test7.foo):
        (test7):

2019-11-21  Mark Lam  <mark.lam@apple.com>

        Fix broken String.prototype.replace() and replaceAll().
        https://bugs.webkit.org/show_bug.cgi?id=204479
        <rdar://problem/57354854>

        Reviewed by Ross Kirsling and Yusuke Suzuki.

        * ChakraCore.yaml:
        * ChakraCore/test/Strings/replace.baseline-jsc: Removed.
        - We no longer need this because we've fixed the spec compliance issue in replace().
        * stress/string-replaceAll-2.js: Added.

2019-11-21  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, rolling in again, regression is not caused by it
        https://bugs.webkit.org/show_bug.cgi?id=202471

        * stress/string-replaceall.js: Added.
        (shouldBe):
        (shouldThrowTypeError):
        (shouldBe.string_appeared_here.replaceAll.Symbol.match):

2019-11-21  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r252683 and r252721.
        https://bugs.webkit.org/show_bug.cgi?id=204475

        13% regression in JetStream2/prepack-wtb (Requested by
        yusukesuzuki on #webkit).

        Reverted changesets:

        "Implement String.prototype.replaceAll"
        https://bugs.webkit.org/show_bug.cgi?id=202471
        https://trac.webkit.org/changeset/252683

        "Unreviewed, address Darin's feedback on r252683."
        https://trac.webkit.org/changeset/252721

2019-11-20  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed, address Darin's feedback on r252683.

        * stress/string-replaceall.js:

2019-11-20  Caio Lima  <ticaiolima@gmail.com>

        [JSC] OSR exit to LLInt is broken on MIPS
        https://bugs.webkit.org/show_bug.cgi?id=203737

        Reviewed by Yusuke Suzuki.

        Unskipping broken tests due to OSR to LLInt bug.

        * microbenchmarks/call-spread-call.js:
        * microbenchmarks/throw.js:
        * stress/allocation-sinking-hints-are-valid-ssa-2.js:
        * stress/allocation-sinking-hints-are-valid-ssa.js:
        * stress/arith-profile-for-negate-can-see-non-number-due-to-dfg-osr-exit-profiling.js:
        * stress/arrowfunction-lexical-bind-supercall-4.js:
        * stress/arrowfunction-tdz-3.js:
        * stress/function-constructor-semantics.js:
        * stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js:
        * stress/stress-cleared-calllinkinfo.js:
        * stress/typedarray-configure-index.js:
        * stress/v8-deltablue-strict.js:

2019-11-20  Mark Lam  <mark.lam@apple.com>

        Flaky JSC test: stress/stack-overflow-in-yarr-byteCompile.js.dfg-eager.
        https://bugs.webkit.org/show_bug.cgi?id=204405

        Reviewed by Alexey Proskuryakov.

        The test was timing out because it's slow.  We don't really need to run this test
        on all configurations.  So, we'll change it to on run with the default
        configuration.  Also declare the test as "//@ slow!".

        * stress/stack-overflow-in-yarr-byteCompile.js:

2019-11-19  Ross Kirsling  <ross.kirsling@sony.com>

        Implement String.prototype.replaceAll
        https://bugs.webkit.org/show_bug.cgi?id=202471

        Reviewed by Yusuke Suzuki.

        * stress/string-replaceall.js: Added.

2019-11-19  Robin Morisset  <rmorisset@apple.com>

        [ESNext][BigInt] Add support for op_inc
        https://bugs.webkit.org/show_bug.cgi?id=193240

        Reviewed by Yusuke Suzuki.

        Some parts of these tests are inspired by tests in a WIP patch by Caio Lima.
        Thanks to him for allowing their reuse.

        * stress/inc-osr-exit-from-big-int.js: Added.
        (let.assert.sameValue):
        (postInc):
        (preInc):
        (postDec):
        (preDec):
        * stress/inc-osr-exit-to-big-int.js: Added.
        (let.assert.sameValue):
        (postInc):
        (preInc):
        (postDec):
        (preDec):
        (o.valueOf):

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

        Remove runNullishAwareOperatorsEnabled

        Rubber-stamped by Keith Miller.

        * stress/nullish-coalescing.js:
        * stress/optional-chaining.js:
        * stress/tail-call-recognize.js:

2019-11-18  Keith Miller  <keith_miller@apple.com>

        Enable Nullish operators by default
        https://bugs.webkit.org/show_bug.cgi?id=204308

        Reviewed by Yusuke Suzuki.

        Remove feature -> option map.

        * test262/config.yaml:

2019-11-18  Caio Lima  <ticaiolima@gmail.com>

        Skipping wasm-error-message-cross-threads.js on architectures without WASM support
        https://bugs.webkit.org/show_bug.cgi?id=204293

        Unreviewed gardening.

        * stress/ensure-code-block-is-not-precise-allocation.js:

        Skipping this test until we fix OSR to LLInt on MIPS.

        * stress/wasm-error-message-cross-threads.js:

2019-11-15  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Anonymous built-in functions should have empty string for a name
        https://bugs.webkit.org/show_bug.cgi?id=204214

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        Mark 20 test cases as passing.

        * stress/builtin-function-name.js:
        (shouldThrow):
        * stress/private-name-as-anonymous-builtin.js:
        Fix tests which are no longer accurate.

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

        [JSC] DFG strength reduction should define "groups" for RegExp constant-folded result
        https://bugs.webkit.org/show_bug.cgi?id=204264

        Reviewed by Michael Saboff.

        * stress/dfg-strength-reduction-for-regexp-should-include-groups-property.js: Added.
        (shouldBe):
        (test):

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

        Wasm error message should be cross-thread-copied
        https://bugs.webkit.org/show_bug.cgi?id=204143

        Reviewed by Mark Lam.

        * stress/wasm-error-message-cross-threads.js: Added.
        (f):

2019-11-14  Alexey Shvayka  <shvaikalesh@gmail.com>

        Use toLength() and getIndexQuickly() in JSON.stringify
        https://bugs.webkit.org/show_bug.cgi?id=204122

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/json-stringify-array-replacer.js: Added.
        * microbenchmarks/json-stringify-empty-array.js: Added.

2019-11-14  Caio Lima  <ticaiolima@gmail.com>

        Support or16(TrustedImm32, AbsoluteAddress) in the MIPS MacroAssembler
        https://bugs.webkit.org/show_bug.cgi?id=204126

        Reviewed by Mark Lam.

        Decreasing the number of iterations of test to avoid timeout into slow
        ports.

        * stress/regress-57020338.js:

2019-11-13  Robin Morisset  <rmorisset@apple.com>

        Split ArithProfile into a Unary and a Binary version
        https://bugs.webkit.org/show_bug.cgi?id=202832
        <rdar://problem/56266847>

        Reviewed by Keith Miller.

        The new test (kindly provided by Mark Lam) catches the metadata corruption that used to happen in the previous version of this patch.

        * stress/regress-57020338.js: Added.

2019-11-13  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] AI should convert IsCellWithType to constant when Structure set is finite
        https://bugs.webkit.org/show_bug.cgi?id=204141

        Reviewed by Saam Barati.

        * stress/generator-cell-with-type.js: Added.
        (shouldBe):
        (shouldThrow):
        (test):
        (i.shouldThrow):

2019-11-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] JSC GC relies on CodeBlock is not PreciseAllocation
        https://bugs.webkit.org/show_bug.cgi?id=204124

        Reviewed by Saam Barati.

        * stress/ensure-code-block-is-not-precise-allocation.js: Added.
        (foo):
        (get for):

2019-11-12  Alexey Shvayka  <shvaikalesh@gmail.com>

        RegExpBuiltinExec should create "groups" property unconditionally
        https://bugs.webkit.org/show_bug.cgi?id=204067

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 4 test cases as passing.

2019-11-11  Ross Kirsling  <ross.kirsling@sony.com>

        UTC offset for Samoa is miscalculated when !HAVE(TIMEGM)
        https://bugs.webkit.org/show_bug.cgi?id=204032

        Reviewed by Yusuke Suzuki.

        * complex.yaml:
        * complex/timezone-offset-apia.js: Added.
        Add test to verify Date.prototype.getTimezoneOffset for TZ=Pacific/Apia.

2019-11-08  Guillaume Emont  <guijemont@igalia.com>

        Temporarily skip another broken test on MIPS due to OSR exit to LLInt
        https://bugs.webkit.org/show_bug.cgi?id=204003

        Unreviewed gardening.

        * stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js:

2019-11-07  Mark Lam  <mark.lam@apple.com>

        Add a stack overflow check in Yarr::ByteCompiler::emitDisjunction().
        https://bugs.webkit.org/show_bug.cgi?id=203936
        <rdar://problem/56624724>

        Reviewed by Saam Barati.

        This issue originally manifested as incorrect-exception-assertion-in-operationRegExpExecNonGlobalOrSticky.js
        failing on iOS devices due to its smaller stack.  We adapted the original test
        here using $vm.callWithStackSize() to reproduce the issue on x86_64 though it
        has a much larger physical stack to work with.  This new test will crash while
        stepping on the guard page beyond the end of the stack if the fix is not applied.

        * stress/stack-overflow-in-yarr-byteCompile.js: Added.

2019-11-07  Tuomas Karkkainen  <tuomas.webkit@apple.com>

        didPassSomeTestsSilenty is misspelled in standalone-pre.js
        https://bugs.webkit.org/show_bug.cgi?id=203948

        Reviewed by Yusuke Suzuki.

        * stress/resources/standalone-pre.js:

2019-11-07  Ross Kirsling  <ross.kirsling@sony.com>

        Unskip test262 tests for async-iteration
        https://bugs.webkit.org/show_bug.cgi?id=203921

        Reviewed by Keith Miller.

        This should have been done two years ago, it seems.

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

2019-11-07  Alexey Shvayka  <shvaikalesh@gmail.com>

        [[HasProperty]] result of Proxy in prototype chain is ignored
        https://bugs.webkit.org/show_bug.cgi?id=203560

        Reviewed by Ross Kirsling.

        * stress/proxy-get-prototype-of.js: Correct Proxy "has" trap test.
        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-11-06  Mark Lam  <mark.lam@apple.com>

        JSGlobalObject::fireWatchpointAndMakeAllArrayStructuresSlowPut() should fire its watchpoint as the last step.
        https://bugs.webkit.org/show_bug.cgi?id=203867
        <rdar://problem/56813514>

        Reviewed by Saam Barati.

        * stress/racy-slow-put-cloned-arguments-when-having-a-bad-time.js: Added.

2019-11-06  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r251940.
        https://bugs.webkit.org/show_bug.cgi?id=203920

        "it introduced test262 failures" (Requested by rkirsling on
        #webkit).

        Reverted changeset:

        "[[HasProperty]] result of Proxy in prototype chain is
        ignored"
        https://bugs.webkit.org/show_bug.cgi?id=203560
        https://trac.webkit.org/changeset/251940

2019-11-04  Saam Barati  <sbarati@apple.com>

        Don't use memmove/memcpy/memset for memory that can be scanned concurrently
        https://bugs.webkit.org/show_bug.cgi?id=203228
        <rdar://problem/56401852>

        Reviewed by Robin Morisset.

        * stress/torn-js-value-concurrent-collector.js: Added.
        (foo):

2019-11-03  Tadeu Zagallo  <tzagallo@apple.com>

        LLIntGenerator should not allocate temporaries in between variables
        https://bugs.webkit.org/show_bug.cgi?id=203787

        Reviewed by Yusuke Suzuki.

        * wasm/stress/local-ref.js: Added.

2019-11-02  Alexey Proskuryakov  <ap@apple.com>

        Revert http://trac.webkit.org/r251875
        Don't use memmove/memcpy/memset for memory that can be scanned concurrently

        This is suspected to have broken performance tests on iOS.

        * stress/torn-js-value-concurrent-collector.js: Removed.

2019-11-01  Alexey Shvayka  <shvaikalesh@gmail.com>

        [[HasProperty]] result of Proxy in prototype chain is ignored
        https://bugs.webkit.org/show_bug.cgi?id=203560

        Reviewed by Ross Kirsling.

        * stress/proxy-get-prototype-of.js: Correct Proxy "has" trap test.
        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-11-01  Caio Lima  <ticaiolima@gmail.com>

        [JSC][MIPS] Skip tests failing in RELEASE_ASSERT_NOT_REACHED() at CallFrame.cpp:81
        https://bugs.webkit.org/show_bug.cgi?id=203738

        Unreviewed gardening.

        * stress/allocation-sinking-hints-are-valid-ssa.js:
        * stress/has-instance-exception-check.js:
        * stress/regress-176485.js:

2019-10-31  Caio Lima  <ticaiolima@gmail.com>

        Temporary skip broken tests on MIPS that is broken due to OSR exit to LLInt
        https://bugs.webkit.org/show_bug.cgi?id=203710

        Unreviewed gardening.

        * microbenchmarks/call-spread-call.js:
        * microbenchmarks/throw.js:
        * stress/allocation-sinking-hints-are-valid-ssa-2.js:
        * stress/arith-profile-for-negate-can-see-non-number-due-to-dfg-osr-exit-profiling.js:
        * stress/arrowfunction-lexical-bind-supercall-4.js:
        * stress/arrowfunction-tdz-3.js:
        * stress/function-constructor-semantics.js:
        * stress/stress-cleared-calllinkinfo.js:
        * stress/typedarray-configure-index.js:
        * stress/v8-deltablue-strict.js:

2019-10-31  Saam Barati  <sbarati@apple.com>

        Don't use memmove/memcpy/memset for memory that can be scanned concurrently
        https://bugs.webkit.org/show_bug.cgi?id=203228
        <rdar://problem/56401852>

        Reviewed by Robin Morisset.

        * stress/torn-js-value-concurrent-collector.js: Added.
        (foo):

2019-10-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Date functions should have intrinsic
        https://bugs.webkit.org/show_bug.cgi?id=202187

        Reviewed by Keith Miller.

        * stress/date-cse.js: Added.
        (shouldBe):
        (test):
        (test2):
        (test3):
        * stress/date-get-date-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-day-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-full-year-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-hours-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-milliseconds-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-minutes-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-month-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-seconds-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-time-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-timezone-offset-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-date-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-day-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-full-year-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-hours-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-milliseconds-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-minutes-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-month-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-utc-seconds-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-get-year-jit.js: Added.
        (shouldBe):
        (test):
        * stress/date-value-of-jit.js: Added.
        (shouldBe):
        (test):

2019-10-30  Guillaume Emont  <guijemont@igalia.com>

        Temporarily skip ChakraCore/test/Math/max.js on arm and mips

        Unreviewed gardening.

        * ChakraCore.yaml:

2019-10-30  Ross Kirsling  <ross.kirsling@sony.com>

        Intl.DateTimeFormat returns resolvedOptions in the wrong order
        https://bugs.webkit.org/show_bug.cgi?id=203297

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        Mark two test cases as passing.

2019-10-30  Tadeu Zagallo  <tzagallo@apple.com>

        tryCachePutToScopeGlobal should hold the lock to update metadata.m_getPutInfo
        https://bugs.webkit.org/show_bug.cgi?id=203628
        <rdar://problem/56705353>

        Reviewed by Yusuke Suzuki.

        * stress/property-move-from-global-object-to-global-lexical-environment.js: Added.
        (foo):

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

        [JSC] Add fast path for String#localeCompare
        https://bugs.webkit.org/show_bug.cgi?id=202676

        Reviewed by Mark Lam.

        * stress/locale-compare-bits.js: Added.
        (shouldBe):

2019-10-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Optimize Promise runtime functions
        https://bugs.webkit.org/show_bug.cgi?id=203454

        Reviewed by Keith Miller.

        * microbenchmarks/promise-reject.js: Added.
        * microbenchmarks/promise-resolve.js: Added.

2019-10-25  Ross Kirsling  <ross.kirsling@sony.com>

        test262-runner should be able to pass JSC a feature flag
        https://bugs.webkit.org/show_bug.cgi?id=203301

        Reviewed by Keith Miller.

        * test262/config.yaml:
        Add feature flag mapping.
        Also skip a few forgotten features as well as BigInt TypedArray tests.

        * test262/expectations.yaml:
        Regenerate expectations.

2019-10-23  Keith Miller  <keith_miller@apple.com>

        Undo incidental change from BytecodeIndex class patch
        https://bugs.webkit.org/show_bug.cgi?id=203339

        Reviewed by Mark Lam.

        * stress/error-source-location-assertion.js: Added.

2019-10-23  Ross Kirsling  <ross.kirsling@sony.com>

        String.prototype.matchAll should throw on non-global regex
        https://bugs.webkit.org/show_bug.cgi?id=202838

        Reviewed by Keith Miller.

        * stress/string-matchall.js: Added.

        * test262/expectations.yaml:
        Mark four test cases as passing.

2019-10-23  Ross Kirsling  <ross.kirsling@sony.com>

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

        Reviewed by Keith Miller.

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

2019-10-22  Zhifei Fang  <zhifei_fang@apple.com>

        [JSC tests] Skip slow tests on Watch S3 and Watch S4
        https://bugs.webkit.org/show_bug.cgi?id=203268

        Reviewed by Saam Barati.

        * microbenchmarks/ArrayBuffer-DataView-alloc-large-long-lived.js:
        * microbenchmarks/ArrayBuffer-DataView-alloc-long-lived.js:
        * microbenchmarks/ArrayBuffer-Int32Array-byteOffset.js:
        * microbenchmarks/ArrayBuffer-Int8Array-alloc-large-long-lived.js:
        * microbenchmarks/ArrayBuffer-Int8Array-alloc-long-lived-buffer.js:
        * microbenchmarks/ArrayBuffer-Int8Array-alloc-long-lived.js:
        * microbenchmarks/ArrayBuffer-Int8Array-alloc.js:
        * microbenchmarks/DataView-custom-properties.js:
        * microbenchmarks/Float32Array-matrix-mult.js:
        * microbenchmarks/Float32Array-to-Float64Array-set.js:
        * microbenchmarks/Float64Array-alloc-long-lived.js:
        * microbenchmarks/Float64Array-to-Int16Array-set.js:
        * microbenchmarks/HashMap-put-get-iterate-keys.js:
        * microbenchmarks/HashMap-put-get-iterate.js:
        * microbenchmarks/HashMap-string-put-get-iterate.js:
        * microbenchmarks/Int16Array-alloc-long-lived.js:
        * microbenchmarks/Int16Array-bubble-sort-with-byteLength.js:
        * microbenchmarks/Int16Array-bubble-sort.js:
        * microbenchmarks/Int16Array-load-int-mul.js:
        * microbenchmarks/Int16Array-to-Int32Array-set.js:
        * microbenchmarks/Int32Array-Int8Array-view-alloc.js:
        * microbenchmarks/Int32Array-alloc-large.js:
        * microbenchmarks/Int32Array-alloc-long-lived.js:
        * microbenchmarks/Int32Array-alloc.js:
        * microbenchmarks/Int8Array-alloc-long-lived.js:
        * microbenchmarks/Int8Array-load-with-byteLength.js:
        * microbenchmarks/Int8Array-load.js:
        * microbenchmarks/JSONP-negative-0.js:
        * microbenchmarks/Number-isNaN.js:
        * microbenchmarks/abc-forward-loop-equal.js:
        * microbenchmarks/abc-postfix-backward-loop.js:
        * microbenchmarks/abc-simple-backward-loop.js:
        * microbenchmarks/abc-simple-forward-loop.js:
        * microbenchmarks/abc-skippy-loop.js:
        * microbenchmarks/abs-boolean.js:
        * microbenchmarks/adapt-to-double-divide.js:
        * microbenchmarks/add-tree.js:
        * microbenchmarks/aliased-arguments-getbyval.js:
        * microbenchmarks/allocate-big-object.js:
        * microbenchmarks/apply-not-apply.js:
        * microbenchmarks/arguments-named-and-reflective.js:
        * microbenchmarks/arguments-out-of-bounds.js:
        * microbenchmarks/arguments-strict-mode.js:
        * microbenchmarks/arguments.js:
        * microbenchmarks/arity-mismatch-inlining.js:
        * microbenchmarks/array-access-polymorphic-structure.js:
        * microbenchmarks/array-nonarray-polymorhpic-access.js:
        * microbenchmarks/array-prototype-every.js:
        * microbenchmarks/array-prototype-forEach.js:
        * microbenchmarks/array-prototype-join-uninitialized.js:
        * microbenchmarks/array-prototype-map.js:
        * microbenchmarks/array-prototype-reduce.js:
        * microbenchmarks/array-prototype-reduceRight.js:
        * microbenchmarks/array-prototype-some.js:
        * microbenchmarks/array-push-0.js:
        * microbenchmarks/array-push-1.js:
        * microbenchmarks/array-push-2.js:
        * microbenchmarks/array-splice-contiguous.js:
        * microbenchmarks/array-with-double-add.js:
        * microbenchmarks/array-with-double-increment.js:
        * microbenchmarks/array-with-double-mul-add.js:
        * microbenchmarks/array-with-double-sum.js:
        * microbenchmarks/array-with-int32-add-sub.js:
        * microbenchmarks/array-with-int32-or-double-sum.js:
        * microbenchmarks/arrowfunciton-direct-arguments.js:
        * microbenchmarks/arrowfunciton-reference-arguments.js:
        * microbenchmarks/arrowfunction-call-in-class-constructor.js:
        * microbenchmarks/arrowfunction-call-in-class-method.js:
        * microbenchmarks/arrowfunction-call-in-function.js:
        * microbenchmarks/arrowfunction-call.js:
        * microbenchmarks/asmjs_bool_bug.js:
        * microbenchmarks/assign-custom-setter-polymorphic.js:
        * microbenchmarks/assign-custom-setter.js:
        * microbenchmarks/basic-set.js:
        * microbenchmarks/big-int-mul.js:
        * microbenchmarks/bigswitch-indirect-symbol.js:
        * microbenchmarks/bigswitch-indirect.js:
        * microbenchmarks/bigswitch.js:
        * microbenchmarks/bit-or-tree.js:
        * microbenchmarks/bit-test-constant.js:
        * microbenchmarks/bit-test-load.js:
        * microbenchmarks/bit-test-nonconstant.js:
        * microbenchmarks/bit-xor-tree.js:
        * microbenchmarks/boolean-test.js:
        * microbenchmarks/bound-function-call.js:
        * microbenchmarks/bound-function-construction-performance.js:
        * microbenchmarks/branch-fold.js:
        * microbenchmarks/branch-on-string-as-boolean.js:
        * microbenchmarks/bug-153431.js:
        * microbenchmarks/build-large-object.js:
        * microbenchmarks/by-val-generic.js:
        * microbenchmarks/cache-get-variables-under-tdz-in-bytecode-generator.js:
        * microbenchmarks/call-or-not-call.js:
        * microbenchmarks/call-spread-apply.js:
        * microbenchmarks/call-spread-call.js:
        * microbenchmarks/call-using-spread.js:
        * microbenchmarks/captured-assignments.js:
        * microbenchmarks/cast-int-to-double.js:
        * microbenchmarks/cell-argument.js:
        * microbenchmarks/cfg-simplify.js:
        * microbenchmarks/chain-getter-access.js:
        * microbenchmarks/check-mul-constant.js:
        * microbenchmarks/check-mul-no-constant.js:
        * microbenchmarks/check-mul-power-of-two.js:
        * microbenchmarks/cmpeq-obj-to-obj-other.js:
        * microbenchmarks/concat-append-one.js:
        * microbenchmarks/constant-fold-check-type-info-flags.js:
        * microbenchmarks/constant-test.js:
        * microbenchmarks/construct-poly-proto-object.js:
        * microbenchmarks/contiguous-array-to-string.js:
        * microbenchmarks/create-lots-of-functions.js:
        * microbenchmarks/create-many-weak-map.js:
        * microbenchmarks/cse-new-array-buffer.js:
        * microbenchmarks/cse-new-array.js:
        * microbenchmarks/custom-accessor-materialized.js:
        * microbenchmarks/custom-accessor-thin-air.js:
        * microbenchmarks/custom-accessor.js:
        * microbenchmarks/custom-setter-getter-as-put-get-by-id.js:
        * microbenchmarks/custom-value-2.js:
        * microbenchmarks/custom-value.js:
        * microbenchmarks/data-view-accesses-2.js:
        * microbenchmarks/data-view-accesses.js:
        * microbenchmarks/dataview-cse.js:
        * microbenchmarks/delay-tear-off-arguments-strictmode.js:
        * microbenchmarks/delta-blue-try-catch.js:
        * microbenchmarks/deltablue-for-of.js:
        * microbenchmarks/deltablue-varargs.js:
        * microbenchmarks/destructuring-arguments.js:
        * microbenchmarks/destructuring-parameters-overridden-by-function.js:
        * microbenchmarks/destructuring-swap.js:
        * microbenchmarks/dfg-internal-function-call.js:
        * microbenchmarks/dfg-internal-function-construct.js:
        * microbenchmarks/dfg-internal-function-not-handled-call.js:
        * microbenchmarks/dfg-internal-function-not-handled-construct.js:
        * microbenchmarks/direct-arguments-getbyval.js:
        * microbenchmarks/direct-arguments-length.js:
        * microbenchmarks/direct-arguments-overridden-length.js:
        * microbenchmarks/direct-arguments-possibly-overridden-length.js:
        * microbenchmarks/direct-call-arity-mismatch.js:
        * microbenchmarks/direct-call.js:
        * microbenchmarks/direct-construct-arity-mismatch.js:
        * microbenchmarks/direct-construct.js:
        * microbenchmarks/direct-tail-call-arity-mismatch.js:
        * microbenchmarks/direct-tail-call-inlined-caller-arity-mismatch.js:
        * microbenchmarks/direct-tail-call-inlined-caller.js:
        * microbenchmarks/direct-tail-call.js:
        * microbenchmarks/div-boolean-double.js:
        * microbenchmarks/div-boolean.js:
        * microbenchmarks/dont-confuse-structures-from-different-executable-as-poly-proto.js:
        * microbenchmarks/double-array-to-string.js:
        * microbenchmarks/double-get-by-val-out-of-bounds.js:
        * microbenchmarks/double-pollution-getbyval.js:
        * microbenchmarks/double-pollution-putbyoffset.js:
        * microbenchmarks/double-real-use.js:
        * microbenchmarks/double-to-int32-typed-array-no-inline.js:
        * microbenchmarks/double-to-int32-typed-array.js:
        * microbenchmarks/double-to-uint32-typed-array-no-inline.js:
        * microbenchmarks/double-to-uint32-typed-array.js:
        * microbenchmarks/elidable-new-object-dag.js:
        * microbenchmarks/elidable-new-object-roflcopter.js:
        * microbenchmarks/elidable-new-object-then-call.js:
        * microbenchmarks/elidable-new-object-tree.js:
        * microbenchmarks/empty-string-plus-int.js:
        * microbenchmarks/emscripten-cube2hash.js:
        * microbenchmarks/eval-cached.js:
        * microbenchmarks/eval-code-ftl-reentry.js:
        * microbenchmarks/eval-code-ftl.js:
        * microbenchmarks/eval-compute.js:
        * microbenchmarks/eval-not-eval-compute-args.js:
        * microbenchmarks/eval-not-eval-compute.js:
        * microbenchmarks/exit-length-on-plain-object.js:
        * microbenchmarks/external-arguments-getbyval.js:
        * microbenchmarks/external-arguments-putbyval.js:
        * microbenchmarks/fixed-typed-array-storage-var-index.js:
        * microbenchmarks/fixed-typed-array-storage.js:
        * microbenchmarks/fold-double-to-int.js:
        * microbenchmarks/fold-get-by-id-to-multi-get-by-offset-rare-int.js:
        * microbenchmarks/fold-get-by-id-to-multi-get-by-offset.js:
        * microbenchmarks/fold-multi-get-by-offset-to-get-by-offset.js:
        * microbenchmarks/fold-multi-get-by-offset-to-poly-get-by-offset.js:
        * microbenchmarks/fold-multi-put-by-offset-to-poly-put-by-offset.js:
        * microbenchmarks/fold-multi-put-by-offset-to-put-by-offset.js:
        * microbenchmarks/fold-multi-put-by-offset-to-replace-or-transition-put-by-offset.js:
        * microbenchmarks/fold-put-by-id-to-multi-put-by-offset.js:
        * microbenchmarks/fold-put-by-val-with-string-to-multi-put-by-offset.js:
        * microbenchmarks/fold-put-by-val-with-symbol-to-multi-put-by-offset.js:
        * microbenchmarks/fold-put-structure.js:
        * microbenchmarks/for-in-on-object-with-lazily-materialized-properties.js:
        * microbenchmarks/for-of-array.js:
        * microbenchmarks/for-of-iterate-array-entries.js:
        * microbenchmarks/for-of-iterate-array-keys.js:
        * microbenchmarks/for-of-iterate-array-values.js:
        * microbenchmarks/forward-arguments-dont-escape-on-arguments-length.js:
        * microbenchmarks/freeze-and-do-work.js:
        * microbenchmarks/fround.js:
        * microbenchmarks/ftl-library-inlining-dataview.js:
        * microbenchmarks/ftl-library-inlining.js:
        * microbenchmarks/ftl-polymorphic-StringFromCharCode.js:
        * microbenchmarks/function-call.js:
        * microbenchmarks/function-dot-apply.js:
        * microbenchmarks/function-test.js:
        * microbenchmarks/function-with-eval.js:
        * microbenchmarks/gcse-poly-get-less-obvious.js:
        * microbenchmarks/gcse-poly-get.js:
        * microbenchmarks/gcse.js:
        * microbenchmarks/generate-multiple-llint-entrypoints.js:
        * microbenchmarks/generator-create.js:
        * microbenchmarks/generator-fib.js:
        * microbenchmarks/generator-function-create.js:
        * microbenchmarks/generator-sunspider-access-nsieve.js:
        * microbenchmarks/generator-with-several-types.js:
        * microbenchmarks/get-by-id-bimorphic-check-structure-elimination-simple.js:
        * microbenchmarks/get-by-id-bimorphic-check-structure-elimination.js:
        * microbenchmarks/get-by-id-chain-from-try-block.js:
        * microbenchmarks/get-by-id-check-structure-elimination.js:
        * microbenchmarks/get-by-id-proto-or-self.js:
        * microbenchmarks/get-by-id-quadmorphic-check-structure-elimination-simple.js:
        * microbenchmarks/get-by-id-self-or-proto.js:
        * microbenchmarks/get-by-val-negative-array-index.js:
        * microbenchmarks/get-by-val-out-of-bounds.js:
        * microbenchmarks/get-by-val-with-string-bimorphic-check-structure-elimination-simple.js:
        * microbenchmarks/get-by-val-with-string-bimorphic-check-structure-elimination.js:
        * microbenchmarks/get-by-val-with-string-chain-from-try-block.js:
        * microbenchmarks/get-by-val-with-string-check-structure-elimination.js:
        * microbenchmarks/get-by-val-with-string-proto-or-self.js:
        * microbenchmarks/get-by-val-with-string-quadmorphic-check-structure-elimination-simple.js:
        * microbenchmarks/get-by-val-with-string-self-or-proto.js:
        * microbenchmarks/get-by-val-with-symbol-bimorphic-check-structure-elimination-simple.js:
        * microbenchmarks/get-by-val-with-symbol-bimorphic-check-structure-elimination.js:
        * microbenchmarks/get-by-val-with-symbol-chain-from-try-block.js:
        * microbenchmarks/get-by-val-with-symbol-check-structure-elimination.js:
        * microbenchmarks/get-by-val-with-symbol-proto-or-self.js:
        * microbenchmarks/get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple.js:
        * microbenchmarks/get-by-val-with-symbol-self-or-proto.js:
        * microbenchmarks/get-custom-getter.js:
        * microbenchmarks/get_by_val-Int32Array.js:
        * microbenchmarks/get_callee_monomorphic.js:
        * microbenchmarks/get_callee_polymorphic.js:
        * microbenchmarks/getter-no-activation.js:
        * microbenchmarks/getter-prototype.js:
        * microbenchmarks/getter-richards-try-catch.js:
        * microbenchmarks/getter-richards.js:
        * microbenchmarks/getter.js:
        * microbenchmarks/global-code-ftl.js:
        * microbenchmarks/global-isNaN.js:
        * microbenchmarks/global-object-access-with-mutating-structure.js:
        * microbenchmarks/global-var-const-infer-fire-from-opt.js:
        * microbenchmarks/global-var-const-infer.js:
        * microbenchmarks/hard-overflow-check-equal.js:
        * microbenchmarks/hard-overflow-check.js:
        * microbenchmarks/has-own-property-name-cache.js:
        * microbenchmarks/hoist-get-by-offset-tower-with-inferred-types.js:
        * microbenchmarks/hoist-make-rope.js:
        * microbenchmarks/hoist-poly-check-structure-effectful-loop.js:
        * microbenchmarks/hoist-poly-check-structure.js:
        * microbenchmarks/implicit-bigswitch-indirect-symbol.js:
        * microbenchmarks/imul-double-only.js:
        * microbenchmarks/imul-int-only.js:
        * microbenchmarks/imul-mixed.js:
        * microbenchmarks/in-by-id-match.js:
        * microbenchmarks/in-by-id-removed.js:
        * microbenchmarks/in-four-cases.js:
        * microbenchmarks/in-one-case-false.js:
        * microbenchmarks/in-one-case-true.js:
        * microbenchmarks/in-two-cases.js:
        * microbenchmarks/indexed-properties-in-objects.js:
        * microbenchmarks/infer-closure-const-then-mov-no-inline.js:
        * microbenchmarks/infer-closure-const-then-mov.js:
        * microbenchmarks/infer-closure-const-then-put-to-scope-no-inline.js:
        * microbenchmarks/infer-closure-const-then-put-to-scope.js:
        * microbenchmarks/infer-closure-const-then-reenter-no-inline.js:
        * microbenchmarks/infer-closure-const-then-reenter.js:
        * microbenchmarks/infer-constant-global-property.js:
        * microbenchmarks/infer-constant-property.js:
        * microbenchmarks/infer-one-time-closure-ten-vars.js:
        * microbenchmarks/infer-one-time-closure-two-vars.js:
        * microbenchmarks/infer-one-time-closure.js:
        * microbenchmarks/infer-one-time-deep-closure.js:
        * microbenchmarks/inline-arguments-access.js:
        * microbenchmarks/inline-arguments-aliased-access.js:
        * microbenchmarks/inline-arguments-local-escape.js:
        * microbenchmarks/inline-get-scoped-var.js:
        * microbenchmarks/inlined-put-by-id-transition.js:
        * microbenchmarks/inlined-put-by-val-with-string-transition.js:
        * microbenchmarks/inlined-put-by-val-with-symbol-transition.js:
        * microbenchmarks/instanceof-always-hit-one.js:
        * microbenchmarks/instanceof-always-hit-two.js:
        * microbenchmarks/instanceof-bound.js:
        * microbenchmarks/instanceof-dynamic.js:
        * microbenchmarks/instanceof-sometimes-hit.js:
        * microbenchmarks/instanceof-tricky-dynamic.js:
        * microbenchmarks/int-or-other-abs-then-get-by-val.js:
        * microbenchmarks/int-or-other-abs-zero-then-get-by-val.js:
        * microbenchmarks/int-or-other-add-then-get-by-val.js:
        * microbenchmarks/int-or-other-add.js:
        * microbenchmarks/int-or-other-div-then-get-by-val.js:
        * microbenchmarks/int-or-other-max-then-get-by-val.js:
        * microbenchmarks/int-or-other-min-then-get-by-val.js:
        * microbenchmarks/int-or-other-mod-then-get-by-val.js:
        * microbenchmarks/int-or-other-mul-then-get-by-val.js:
        * microbenchmarks/int-or-other-neg-then-get-by-val.js:
        * microbenchmarks/int-or-other-neg-zero-then-get-by-val.js:
        * microbenchmarks/int-or-other-sub-then-get-by-val.js:
        * microbenchmarks/int-or-other-sub.js:
        * microbenchmarks/int-overflow-local.js:
        * microbenchmarks/int32-array-to-string.js:
        * microbenchmarks/int52-back-and-forth.js:
        * microbenchmarks/int52-rand-function.js:
        * microbenchmarks/int52-spill.js:
        * microbenchmarks/int8-out-of-bounds.js:
        * microbenchmarks/integer-divide.js:
        * microbenchmarks/integer-modulo.js:
        * microbenchmarks/is-array-for-array.js:
        * microbenchmarks/is-array-for-mixed-case.js:
        * microbenchmarks/is-array-for-non-array-object.js:
        * microbenchmarks/is-array-for-proxy.js:
        * microbenchmarks/is-boolean-fold-tricky.js:
        * microbenchmarks/is-boolean-fold.js:
        * microbenchmarks/is-function-fold-tricky-internal-function.js:
        * microbenchmarks/is-function-fold-tricky.js:
        * microbenchmarks/is-function-fold.js:
        * microbenchmarks/is-not-cell-speculation-for-empty-value.js:
        * microbenchmarks/is-number-fold-tricky.js:
        * microbenchmarks/is-number-fold.js:
        * microbenchmarks/is-object-or-null-fold-functions.js:
        * microbenchmarks/is-object-or-null-fold-less-tricky.js:
        * microbenchmarks/is-object-or-null-fold-tricky.js:
        * microbenchmarks/is-object-or-null-fold.js:
        * microbenchmarks/is-object-or-null-trickier-function.js:
        * microbenchmarks/is-object-or-null-trickier-internal-function.js:
        * microbenchmarks/is-object-or-null-tricky-function.js:
        * microbenchmarks/is-object-or-null-tricky-internal-function.js:
        * microbenchmarks/is-string-fold-tricky.js:
        * microbenchmarks/is-string-fold.js:
        * microbenchmarks/is-symbol-mixed.js:
        * microbenchmarks/is-symbol.js:
        * microbenchmarks/is-undefined-fold-tricky.js:
        * microbenchmarks/is-undefined-fold.js:
        * microbenchmarks/json-parse-array-reviver-same-value.js:
        * microbenchmarks/json-parse-array-reviver.js:
        * microbenchmarks/json-parse-object-reviver-same-value.js:
        * microbenchmarks/json-parse-object-reviver.js:
        * microbenchmarks/large-empty-array-join-resolve-rope.js:
        * microbenchmarks/large-empty-array-join.js:
        * microbenchmarks/large-int-captured.js:
        * microbenchmarks/large-int-neg.js:
        * microbenchmarks/large-int.js:
        * microbenchmarks/large-map-iteration.js:
        * microbenchmarks/lazy-array-species-watchpoints.js:
        * microbenchmarks/let-for-in.js:
        * microbenchmarks/licm-dragons-out-of-bounds.js:
        * microbenchmarks/licm-dragons-overflow.js:
        * microbenchmarks/licm-dragons-two-structures.js:
        * microbenchmarks/licm-dragons.js:
        * microbenchmarks/load-varargs-elimination.js:
        * microbenchmarks/locale-compare.js:
        * microbenchmarks/logical-not-weird-types.js:
        * microbenchmarks/logical-not.js:
        * microbenchmarks/loop-osr-with-arity-mismatch.js:
        * microbenchmarks/lots-of-fields.js:
        * microbenchmarks/make-indexed-storage.js:
        * microbenchmarks/make-rope-cse.js:
        * microbenchmarks/make-rope.js:
        * microbenchmarks/many-foreach-calls.js:
        * microbenchmarks/many-repeat-stores.js:
        * microbenchmarks/map-for-each.js:
        * microbenchmarks/map-for-of.js:
        * microbenchmarks/map-has-and-set.js:
        * microbenchmarks/map-has-get-cse-opportunity.js:
        * microbenchmarks/map-key-well-typed.js:
        * microbenchmarks/map-rehash.js:
        * microbenchmarks/marsaglia-larger-ints.js:
        * microbenchmarks/marsaglia-osr-entry.js:
        * microbenchmarks/math-random.js:
        * microbenchmarks/math-trunc.js:
        * microbenchmarks/math-with-out-of-bounds-array-values.js:
        * microbenchmarks/max-boolean.js:
        * microbenchmarks/megamorphic-load.js:
        * microbenchmarks/memcpy-loop.js:
        * microbenchmarks/memcpy-typed-loop-large.js:
        * microbenchmarks/memcpy-typed-loop-small.js:
        * microbenchmarks/memcpy-typed-loop-speculative.js:
        * microbenchmarks/memcpy-typed-loop.js:
        * microbenchmarks/memcpy-wasm-large.js:
        * microbenchmarks/memcpy-wasm-medium.js:
        * microbenchmarks/memcpy-wasm-small.js:
        * microbenchmarks/memcpy-wasm.js:
        * microbenchmarks/method-on-number.js:
        * microbenchmarks/min-boolean.js:
        * microbenchmarks/minus-boolean-double.js:
        * microbenchmarks/minus-boolean.js:
        * microbenchmarks/misc-strict-eq.js:
        * microbenchmarks/mod-boolean-double.js:
        * microbenchmarks/mod-boolean.js:
        * microbenchmarks/mod-untyped.js:
        * microbenchmarks/mul-boolean-double.js:
        * microbenchmarks/mul-boolean.js:
        * microbenchmarks/mul-immediate-sub.js:
        * microbenchmarks/neg-boolean.js:
        * microbenchmarks/negative-zero-divide.js:
        * microbenchmarks/negative-zero-modulo.js:
        * microbenchmarks/negative-zero-negate.js:
        * microbenchmarks/new-array-buffer-dead.js:
        * microbenchmarks/new-array-buffer-push.js:
        * microbenchmarks/new-array-buffer-vector-profile.js:
        * microbenchmarks/new-array-dead.js:
        * microbenchmarks/new-array-push.js:
        * microbenchmarks/new-error.js:
        * microbenchmarks/no-inline-constructor.js:
        * microbenchmarks/number-test.js:
        * microbenchmarks/number-to-string-strength-reduction.js:
        * microbenchmarks/number-to-string-with-add-empty.js:
        * microbenchmarks/number-to-string-with-add-in-loop.js:
        * microbenchmarks/number-to-string-with-add.js:
        * microbenchmarks/number-to-string-with-radix-10.js:
        * microbenchmarks/number-to-string-with-radix-cse.js:
        * microbenchmarks/number-to-string-with-radix.js:
        * microbenchmarks/object-and.js:
        * microbenchmarks/object-closure-call.js:
        * microbenchmarks/object-create-constant-prototype.js:
        * microbenchmarks/object-create-null.js:
        * microbenchmarks/object-create-unknown-object-prototype.js:
        * microbenchmarks/object-create-untyped-prototype.js:
        * microbenchmarks/object-entries.js:
        * microbenchmarks/object-get-own-property-symbols-on-large-array.js:
        * microbenchmarks/object-get-own-property-symbols.js:
        * microbenchmarks/object-int-add-array.js:
        * microbenchmarks/object-int-add.js:
        * microbenchmarks/object-int-and-array.js:
        * microbenchmarks/object-int-mul-array.js:
        * microbenchmarks/object-int-sub-array.js:
        * microbenchmarks/object-int-sub.js:
        * microbenchmarks/object-is.js:
        * microbenchmarks/object-iterate-symbols.js:
        * microbenchmarks/object-iterate.js:
        * microbenchmarks/object-keys-map-values.js:
        * microbenchmarks/object-keys.js:
        * microbenchmarks/object-lshift.js:
        * microbenchmarks/object-or.js:
        * microbenchmarks/object-rshift.js:
        * microbenchmarks/object-test.js:
        * microbenchmarks/object-urshift.js:
        * microbenchmarks/object-values.js:
        * microbenchmarks/object-xor.js:
        * microbenchmarks/obvious-sink-pathology-taken.js:
        * microbenchmarks/obvious-sink-pathology.js:
        * microbenchmarks/obviously-elidable-new-object.js:
        * microbenchmarks/plus-boolean-arith.js:
        * microbenchmarks/plus-boolean-double.js:
        * microbenchmarks/plus-boolean.js:
        * microbenchmarks/poly-chain-access-different-prototypes-simple.js:
        * microbenchmarks/poly-chain-access-different-prototypes.js:
        * microbenchmarks/poly-chain-access-simpler.js:
        * microbenchmarks/poly-chain-access.js:
        * microbenchmarks/poly-proto-access.js:
        * microbenchmarks/poly-proto-and-non-poly-proto-same-ic.js:
        * microbenchmarks/poly-proto-clear-js-function-allocation-profile.js:
        * microbenchmarks/poly-proto-put-transition-speed.js:
        * microbenchmarks/poly-proto-setter-speed.js:
        * microbenchmarks/poly-stricteq.js:
        * microbenchmarks/polymorphic-array-call.js:
        * microbenchmarks/polymorphic-get-by-id.js:
        * microbenchmarks/polymorphic-put-by-id.js:
        * microbenchmarks/polymorphic-put-by-val-with-string.js:
        * microbenchmarks/polymorphic-put-by-val-with-symbol.js:
        * microbenchmarks/polymorphic-structure.js:
        * microbenchmarks/polyvariant-get-by-id-shorter-tower.js:
        * microbenchmarks/polyvariant-get-by-id-tower.js:
        * microbenchmarks/polyvariant-monomorphic-get-by-id.js:
        * microbenchmarks/prevent-extensions-and-do-work.js:
        * microbenchmarks/promise-creation-many.js:
        * microbenchmarks/proto-getter-access.js:
        * microbenchmarks/prototype-access-with-mutating-prototype.js:
        * microbenchmarks/put-by-id-replace-and-transition.js:
        * microbenchmarks/put-by-id-slightly-polymorphic.js:
        * microbenchmarks/put-by-id-transition-with-indexing-header.js:
        * microbenchmarks/put-by-id.js:
        * microbenchmarks/put-by-val-direct-large-index.js:
        * microbenchmarks/put-by-val-direct.js:
        * microbenchmarks/put-by-val-large-index-blank-indexing-type.js:
        * microbenchmarks/put-by-val-machine-int.js:
        * microbenchmarks/put-by-val-negative-array-index.js:
        * microbenchmarks/put-by-val-with-string-replace-and-transition.js:
        * microbenchmarks/put-by-val-with-string-slightly-polymorphic.js:
        * microbenchmarks/put-by-val-with-string.js:
        * microbenchmarks/put-by-val-with-symbol-replace-and-transition.js:
        * microbenchmarks/put-by-val-with-symbol-slightly-polymorphic.js:
        * microbenchmarks/put-by-val-with-symbol.js:
        * microbenchmarks/rare-osr-exit-on-local.js:
        * microbenchmarks/raytrace-with-empty-try-catch.js:
        * microbenchmarks/raytrace-with-try-catch.js:
        * microbenchmarks/regexp-exec.js:
        * microbenchmarks/regexp-last-index.js:
        * microbenchmarks/regexp-nested-nonzero-min-counted-parens.js:
        * microbenchmarks/regexp-prototype-is-not-instance.js:
        * microbenchmarks/regexp-prototype-search-observable-side-effects.js:
        * microbenchmarks/regexp-prototype-search-observable-side-effects2.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects2.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects3-flags.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects3-global.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects3-ignoreCase.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects3-multiline.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects3-sticky.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects3-unicode.js:
        * microbenchmarks/regexp-prototype-split-observable-side-effects4.js:
        * microbenchmarks/regexp-prototype-test-observable-side-effects.js:
        * microbenchmarks/regexp-prototype-test-observable-side-effects2.js:
        * microbenchmarks/regexp-set-last-index.js:
        * microbenchmarks/regexp-u-global-es5.js:
        * microbenchmarks/regexp-u-global-es6.js:
        * microbenchmarks/register-pressure-from-osr.js:
        * microbenchmarks/repeat-multi-get-by-offset.js:
        * microbenchmarks/rest-parameter-construction-performance.js:
        * microbenchmarks/richards-empty-try-catch.js:
        * microbenchmarks/richards-try-catch.js:
        * microbenchmarks/scoped-arguments-length.js:
        * microbenchmarks/scoped-arguments-overridden-length.js:
        * microbenchmarks/scoped-arguments-possibly-overridden-length.js:
        * microbenchmarks/seal-and-do-work.js:
        * microbenchmarks/set-for-each.js:
        * microbenchmarks/set-for-of.js:
        * microbenchmarks/setter-prototype.js:
        * microbenchmarks/setter.js:
        * microbenchmarks/simple-activation-demo.js:
        * microbenchmarks/simple-getter-access.js:
        * microbenchmarks/simple-poly-call-nested.js:
        * microbenchmarks/simple-poly-call.js:
        * microbenchmarks/simple-regexp-exec-folding-fail.js:
        * microbenchmarks/simple-regexp-exec-folding.js:
        * microbenchmarks/simple-regexp-test-folding-fail-with-hoisted-regexp.js:
        * microbenchmarks/simple-regexp-test-folding-fail.js:
        * microbenchmarks/simple-regexp-test-folding-with-hoisted-regexp.js:
        * microbenchmarks/simple-regexp-test-folding.js:
        * microbenchmarks/sin-boolean.js:
        * microbenchmarks/singleton-scope.js:
        * microbenchmarks/sink-function.js:
        * microbenchmarks/sink-huge-activation.js:
        * microbenchmarks/sinkable-new-object-dag.js:
        * microbenchmarks/sinkable-new-object-taken.js:
        * microbenchmarks/sinkable-new-object-with-builtin-constructor.js:
        * microbenchmarks/sinkable-new-object.js:
        * microbenchmarks/slow-array-profile-convergence.js:
        * microbenchmarks/slow-convergence.js:
        * microbenchmarks/slow-ternaries.js:
        * microbenchmarks/sorting-benchmark.js:
        * microbenchmarks/sparse-conditional.js:
        * microbenchmarks/sparse-set.js:
        * microbenchmarks/splice-to-remove.js:
        * microbenchmarks/strcat-const.js:
        * microbenchmarks/strcat-length-const.js:
        * microbenchmarks/strict-osr-entry.js:
        * microbenchmarks/string-char-code-at.js:
        * microbenchmarks/string-concat-convert.js:
        * microbenchmarks/string-concat-long-convert.js:
        * microbenchmarks/string-concat-long.js:
        * microbenchmarks/string-concat-object.js:
        * microbenchmarks/string-concat-pair-object.js:
        * microbenchmarks/string-concat-pair-simple.js:
        * microbenchmarks/string-concat-simple.js:
        * microbenchmarks/string-concat.js:
        * microbenchmarks/string-cons-repeat.js:
        * microbenchmarks/string-cons-tower.js:
        * microbenchmarks/string-equality.js:
        * microbenchmarks/string-from-char-code.js:
        * microbenchmarks/string-get-by-val-big-char.js:
        * microbenchmarks/string-get-by-val-out-of-bounds-insane.js:
        * microbenchmarks/string-get-by-val-out-of-bounds.js:
        * microbenchmarks/string-get-by-val.js:
        * microbenchmarks/string-hash.js:
        * microbenchmarks/string-long-ident-equality.js:
        * microbenchmarks/string-object-to-string.js:
        * microbenchmarks/string-object-value-of.js:
        * microbenchmarks/string-out-of-bounds.js:
        * microbenchmarks/string-prototype-search-observable-side-effects.js:
        * microbenchmarks/string-prototype-search-observable-side-effects2.js:
        * microbenchmarks/string-prototype-search-observable-side-effects3.js:
        * microbenchmarks/string-prototype-search-observable-side-effects4.js:
        * microbenchmarks/string-prototype-split-observable-side-effects.js:
        * microbenchmarks/string-prototype-split-observable-side-effects2.js:
        * microbenchmarks/string-prototype-split-observable-side-effects3-flags.js:
        * microbenchmarks/string-prototype-split-observable-side-effects3-global.js:
        * microbenchmarks/string-prototype-split-observable-side-effects3-ignoreCase.js:
        * microbenchmarks/string-prototype-split-observable-side-effects3-multiline.js:
        * microbenchmarks/string-prototype-split-observable-side-effects3-sticky.js:
        * microbenchmarks/string-prototype-split-observable-side-effects3-unicode.js:
        * microbenchmarks/string-prototype-split-observable-side-effects4.js:
        * microbenchmarks/string-repeat-arith.js:
        * microbenchmarks/string-repeat-not-resolving-fixed.js:
        * microbenchmarks/string-repeat-not-resolving-no-inline.js:
        * microbenchmarks/string-repeat-not-resolving.js:
        * microbenchmarks/string-repeat-resolving-fixed.js:
        * microbenchmarks/string-repeat-resolving-no-inline.js:
        * microbenchmarks/string-repeat-resolving.js:
        * microbenchmarks/string-repeat-single-not-resolving.js:
        * microbenchmarks/string-repeat-single-resolving.js:
        * microbenchmarks/string-repeat-small-not-resolving.js:
        * microbenchmarks/string-repeat-small-resolving.js:
        * microbenchmarks/string-replace-empty.js:
        * microbenchmarks/string-replace-generic.js:
        * microbenchmarks/string-replace.js:
        * microbenchmarks/string-rope-with-object.js:
        * microbenchmarks/string-slice-empty.js:
        * microbenchmarks/string-slice-one-char.js:
        * microbenchmarks/string-slice.js:
        * microbenchmarks/string-sub.js:
        * microbenchmarks/string-test.js:
        * microbenchmarks/string-transcoding.js:
        * microbenchmarks/string-var-equality.js:
        * microbenchmarks/stringalloc.js:
        * microbenchmarks/structure-hoist-over-transitions.js:
        * microbenchmarks/substring-concat-weird.js:
        * microbenchmarks/substring-concat.js:
        * microbenchmarks/substring.js:
        * microbenchmarks/super-get-by-id-with-this-monomorphic.js:
        * microbenchmarks/super-get-by-id-with-this-polymorphic.js:
        * microbenchmarks/super-get-by-val-with-this-monomorphic.js:
        * microbenchmarks/super-get-by-val-with-this-polymorphic.js:
        * microbenchmarks/super-getter.js:
        * microbenchmarks/switch-char-constant.js:
        * microbenchmarks/switch-char.js:
        * microbenchmarks/switch-constant.js:
        * microbenchmarks/switch-string-basic-big-var.js:
        * microbenchmarks/switch-string-basic-big.js:
        * microbenchmarks/switch-string-basic-var.js:
        * microbenchmarks/switch-string-basic.js:
        * microbenchmarks/switch-string-big-length-tower-var.js:
        * microbenchmarks/switch-string-length-tower-var.js:
        * microbenchmarks/switch-string-length-tower.js:
        * microbenchmarks/switch-string-short.js:
        * microbenchmarks/switch.js:
        * microbenchmarks/switching-size-classes.js:
        * microbenchmarks/symbol-creation.js:
        * microbenchmarks/symbol-tostringtag.js:
        * microbenchmarks/tan.js:
        * microbenchmarks/tear-off-arguments-simple.js:
        * microbenchmarks/tear-off-arguments.js:
        * microbenchmarks/template-string-array.js:
        * microbenchmarks/temporal-structure.js:
        * microbenchmarks/throw.js:
        * microbenchmarks/to-int32-boolean.js:
        * microbenchmarks/to-number-boolean.js:
        * microbenchmarks/to-number-constructor-number-string-number-string.js:
        * microbenchmarks/to-number-constructor-only-number.js:
        * microbenchmarks/to-number-constructor-only-string.js:
        * microbenchmarks/to-number-constructor-string-number-string-number.js:
        * microbenchmarks/to-number-number-string-number-string.js:
        * microbenchmarks/to-number-only-number.js:
        * microbenchmarks/to-number-only-string.js:
        * microbenchmarks/to-number-string-number-string-number.js:
        * microbenchmarks/to-string-on-cow-array.js:
        * microbenchmarks/try-catch-get-by-val-cloned-arguments.js:
        * microbenchmarks/try-catch-get-by-val-direct-arguments.js:
        * microbenchmarks/try-catch-get-by-val-scoped-arguments.js:
        * microbenchmarks/try-catch-word-count.js:
        * microbenchmarks/try-get-by-id-basic.js:
        * microbenchmarks/try-get-by-id-polymorphic.js:
        * microbenchmarks/typed-array-get-set-by-val-profiling.js:
        * microbenchmarks/typed-array-subarray.js:
        * microbenchmarks/typed-array-sum.js:
        * microbenchmarks/undefined-test.js:
        * microbenchmarks/unprofiled-licm.js:
        * microbenchmarks/untyped-string-from-char-code.js:
        * microbenchmarks/v8-raytrace-with-empty-try-catch.js:
        * microbenchmarks/v8-raytrace-with-try-catch.js:
        * microbenchmarks/v8-regexp-search.js:
        * microbenchmarks/varargs-call.js:
        * microbenchmarks/varargs-construct-inline.js:
        * microbenchmarks/varargs-construct.js:
        * microbenchmarks/varargs-inline.js:
        * microbenchmarks/varargs-strict-mode.js:
        * microbenchmarks/varargs.js:
        * microbenchmarks/vector-length-hint-array-constructor.js:
        * microbenchmarks/vector-length-hint-new-array.js:
        * microbenchmarks/weak-map-key.js:
        * microbenchmarks/weak-set-key.js:
        * microbenchmarks/weird-inlining-const-prop.js:

2019-10-22  Mark Lam  <mark.lam@apple.com>

        Fix incorrect assertion in operationRegExpExecNonGlobalOrSticky().
        https://bugs.webkit.org/show_bug.cgi?id=203230
        <rdar://problem/56460749>

        Reviewed by Robin Morisset.

        * stress/incorrect-exception-assertion-in-operationRegExpExecNonGlobalOrSticky.js: Added.

2019-10-21  Mark Lam  <mark.lam@apple.com>

        Rolling out r251411: Fix is incorrect.
        https://bugs.webkit.org/show_bug.cgi?id=203230

        Not reviewed.

        * stress/incorrect-exception-assertion-in-operationRegExpExecNonGlobalOrSticky.js: Removed.

2019-10-21  Mark Lam  <mark.lam@apple.com>

        Fix incorrect assertion in operationRegExpExecNonGlobalOrSticky().
        https://bugs.webkit.org/show_bug.cgi?id=203230
        <rdar://problem/56460749>

        Reviewed by Robin Morisset.

        * stress/incorrect-exception-assertion-in-operationRegExpExecNonGlobalOrSticky.js: Added.

2019-10-21  Saam Barati  <sbarati@apple.com>

        ValuePow's constant folding rule differs from what the runtime does
        https://bugs.webkit.org/show_bug.cgi?id=203220
        <rdar://problem/56181441>

        Reviewed by Yusuke Suzuki.

        * value-pow-ai-rule-should-box-the-same-way-as-the-runtime.js: Added.
        (foo):

2019-10-21  Mark Lam  <mark.lam@apple.com>

        Fix missing exception check in JSON Stringifier.
        https://bugs.webkit.org/show_bug.cgi?id=203227
        <rdar://problem/56459854>

        Reviewed by Keith Miller.

        * stress/missing-exception-check-in-josn-stringifier.js: Added.

2019-10-21  Saam Barati  <sbarati@apple.com>

        JSON.parse has bad is array assert
        https://bugs.webkit.org/show_bug.cgi?id=203207
        <rdar://problem/56366913>

        Reviewed by Yusuke Suzuki.

        * stress/json-parse-array-prototype-is-array-assert.js: Added.
        (assert):

2019-10-21  Robin Morisset  <rmorisset@apple.com>

        Throw the right exception upon memory exhaustion in Array::slice
        https://bugs.webkit.org/show_bug.cgi?id=202650

        Reviewed by Saam Barati.

        * stress/array-slice-memory-exhaustion.js: Added.
        (foo):

2019-10-21  Robin Morisset  <rmorisset@apple.com>

        Post increment/decrement should only call ToNumber once
        https://bugs.webkit.org/show_bug.cgi?id=202711

        Reviewed by Saam Barati.

        * stress/postinc-custom-valueOf.js: Added.
        (postInc):
        (postDec):

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

        [JSC] DFG::CommonData modification by DFG reallyAdd should be guarded by CodeBlock's lock
        https://bugs.webkit.org/show_bug.cgi?id=203177

        Reviewed by Mark Lam.

        * stress/dfg-really-add-locking.js: Added.

2019-10-17  Mark Lam  <mark.lam@apple.com>

        Add missing checks after calls to the sameValue() JSValue comparator.
        https://bugs.webkit.org/show_bug.cgi?id=203126
        <rdar://problem/56366561>

        Reviewed by Saam Barati.

        * stress/validate-exception-check-in-proxy-object-put.js: Added.

2019-10-17  Saam Barati  <sbarati@apple.com>

        GetByVal and PutByVal on ArrayStorage need to use the same AbstractHeap
        https://bugs.webkit.org/show_bug.cgi?id=203124
        <rdar://problem/55988183>

        Reviewed by Yusuke Suzuki.

        * stress/licm-array-storage-get-and-put-by-val.js: Added.
        (assert):
        (foo):

2019-10-16  Keith Miller  <keith_miller@apple.com>

        Move assert in Wasm::Plan::fail.
        https://bugs.webkit.org/show_bug.cgi?id=203052

        Reviewed by Mark Lam.

        * wasm/regress/wasm-plan-fail-bad-error-message-assert.js: Added.
        (Binary):
        (Binary.prototype.trunc_buffer):
        (Binary.prototype.emit_leb_u):
        (Binary.prototype.emit_u32v):
        (Binary.prototype.emit_bytes):
        (Binary.prototype.emit_header):
        (__f_576):
        (__f_587):

2019-10-15  Mark Lam  <mark.lam@apple.com>

        operationSwitchCharWithUnknownKeyType failed to handle OOME when resolving rope string.
        https://bugs.webkit.org/show_bug.cgi?id=202312
        <rdar://problem/55782280>

        Reviewed by Yusuke Suzuki.

        * stress/operationSwitchCharWithUnknownKeyType-should-avoid-resolving-rope-strings.js: Added.
        * stress/operationSwitchCharWithUnknownKeyType-should-avoid-resolving-rope-strings2.js: Added.
        * stress/switch-on-char-llint-rope.js:
        - Changed this test to make a new rope string for each iterations.  Otherwise,
          the rope will get resolved, and subsequent tiers will not be testing with a rope.

2019-10-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] GetterSetter should be JSCell, not JSObject
        https://bugs.webkit.org/show_bug.cgi?id=202656

        Reviewed by Tadeu Zagallo and Saam Barati.

        * stress/getter-setter-should-be-cell.js: Added.
        (foo.with.):
        (foo.with.get for):
        (foo.with.bar):
        (foo):

2019-10-14  Saam Barati  <sbarati@apple.com>

        Canonicalize how we prepare the prototype chain for inline caching
        https://bugs.webkit.org/show_bug.cgi?id=202827
        <rdar://problem/56193919>

        Reviewed by Yusuke Suzuki.

        * stress/cache-correct-offset-after-flattening.js: Added.
        (assert):

2019-10-14  Paulo Matos  <pmatos@igalia.com>

        Skip memcpy-typed-loop timing out on ARMv7 pending investigation
        https://bugs.webkit.org/show_bug.cgi?id=202923

        Reviewed by Adrian Perez de Castro.

        * microbenchmarks/memcpy-typed-loop.js:

2019-10-11  Keith Miller  <keith_miller@apple.com>

        Wasm B3IRGenerator should use arguments for control data.
        https://bugs.webkit.org/show_bug.cgi?id=202855

        Reviewed by Yusuke Suzuki.

        * wasm/stress/loop-more-args-than-results.js: Added.

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

        Modify JSTests/stress/string-overflow-createError-*.js tests to allow an OOME result.
        https://bugs.webkit.org/show_bug.cgi?id=202828

        Reviewed by Yusuke Suzuki.

        The tests intentionally allocate a very large string.  Hence, for some memory
        limited configurations, it is perfectly reasonable for the test to throw an Out
        Of Memory error.

        * stress/string-overflow-createError-builder.js:
        * stress/string-overflow-createError-fit.js:

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

        Unreviewed, roll out r250878
        https://bugs.webkit.org/show_bug.cgi?id=202656

        Breaking vimeo page.

        * stress/getter-setter-should-be-cell.js: Removed.

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

        [JSC] GetterSetter should be JSCell, not JSObject
        https://bugs.webkit.org/show_bug.cgi?id=202656

        Reviewed by Tadeu Zagallo and Saam Barati.

        * stress/getter-setter-should-be-cell.js: Added.
        (foo.with.):
        (foo.with.get for):
        (foo.with.bar):
        (foo):

2019-10-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSON.parse incorrectly handles array proxies
        https://bugs.webkit.org/show_bug.cgi?id=199292

        Reviewed by Saam Barati.

        * microbenchmarks/json-parse-array-reviver-same-value.js: Added.
        * microbenchmarks/json-parse-array-reviver.js: Added.
        * microbenchmarks/json-parse-object-reviver-same-value.js: Added.
        * microbenchmarks/json-parse-object-reviver.js: Added.
        * stress/json-parse-reviver-array-proxy.js: Added.
        * stress/json-parse-reviver-revoked-proxy.js: Added.
        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-10-08  Ross Kirsling  <ross.kirsling@sony.com>

        Update test262 (2019.10.08).

        Rubber-stamped by Keith Miller.

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

2019-10-07  Saam Barati  <sbarati@apple.com>

        Allow OSR exit to the LLInt
        https://bugs.webkit.org/show_bug.cgi?id=197993

        Reviewed by Tadeu Zagallo.

        * stress/exit-from-getter-by-val.js: Added.
        * stress/exit-from-setter-by-val.js: Added.

2019-10-07  Matt Lewis  <jlewis3@apple.com>

        Unreviewed, rolling out r250750.

        Reverting change as this broke interal test over the weekend.

        Reverted changeset:

        "Allow OSR exit to the LLInt"
        https://bugs.webkit.org/show_bug.cgi?id=197993
        https://trac.webkit.org/changeset/250750

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

        Allow OSR exit to the LLInt
        https://bugs.webkit.org/show_bug.cgi?id=197993

        Reviewed by Tadeu Zagallo.

        * stress/exit-from-getter-by-val.js: Added.
        * stress/exit-from-setter-by-val.js: Added.

2019-10-04  Paulo Matos  <pmatos@igalia.com>

        Revert regexp test skip on armv7l and mips
        https://bugs.webkit.org/show_bug.cgi?id=202310

        Reviewed by Žan Doberšek.

        Test was skipped in bug 202113 on armv7l and mips due to bug 202041.
        Bug 202041 is fixed and change of bug 202113 can be reverted.

        * stress/regexp-unicode-surrogate-pair-increment-should-involve-length-check.js:

2019-10-02  Mark Lam  <mark.lam@apple.com>

        DoubleToStringConverter::ToExponential() should null terminate its string.
        https://bugs.webkit.org/show_bug.cgi?id=202492
        <rdar://problem/55907708>

        Reviewed by Filip Pizlo.

        * stress/dtoa-AddSubstring-should-uses-strnlen-in-assertion.js: Added.

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

        [JSC] AsyncGenerator should have internal fields
        https://bugs.webkit.org/show_bug.cgi?id=201498

        Reviewed by Saam Barati.

        * stress/async-generator-construct-failure.js: Added.
        (shouldThrow):
        (async.gen):
        (TypeError):
        * stress/async-generator-prototype-change.js: Added.
        (shouldBe):
        (async.gen):
        * stress/async-generator-prototype-closure.js: Added.
        (shouldBe):
        (test.async.gen):
        (test):
        * stress/create-async-generator.js: Added.
        (shouldBe):
        (test.async.generator):
        (test):

2019-10-01  Saam Barati  <sbarati@apple.com>

        ObjectAllocationSinkingPhase shouldn't insert hints for allocations which are no longer valid
        https://bugs.webkit.org/show_bug.cgi?id=199361
        <rdar://problem/52454940>

        Reviewed by Yusuke Suzuki.

        * stress/allocation-sinking-hints-are-valid-ssa-2.js: Added.
        (main.fn):
        (main.executor):
        (main):
        * stress/allocation-sinking-hints-are-valid-ssa.js: Added.
        (main.fn):
        (main.executor):
        (main):

2019-10-01  Keith Miller  <keith_miller@apple.com>

        skip test until we figure out why it's timing out
        https://bugs.webkit.org/show_bug.cgi?id=202423

        Reviewed by Mark Lam.

        new_array_with_spread-should-cap-array-size-to-MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.js consistently times out on the bots.
        Let's skip it until we figure out what's going on.

        * stress/new_array_with_spread-should-cap-array-size-to-MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.js:

2019-10-01  Keith Miller  <keith_miller@apple.com>

        Mark toctou test as skipped on debug builds
        https://bugs.webkit.org/show_bug.cgi?id=202420

        Reviewed by Saam Barati.

        Keeps timing out... Let's just skip it.

        * stress/toctou-having-a-bad-time-new-array.js:

2019-10-01  Keith Miller  <keith_miller@apple.com>

        Test262 update

        Rubber-stamped by Michael Saboff.

        Note, this was too big to effectivetly put on bugzilla as it's a 10MB patch...

        * test262/*:

2019-10-01  Michael Saboff  <msaboff@apple.com> and Paulo Matos  <pmatos@igalia.com>

        [YARR] Properly handle surrogates when matching back references
        https://bugs.webkit.org/show_bug.cgi?id=202041

        Reviewed by Keith Miller.

        Unchanged from the workin progress patch posted by Paulo Matos <pmatos@igalia.com>.

        Updated test.

        * stress/regexp-unicode-surrogate-pair-increment-should-involve-length-check.js:
        (testRegExpNotMatch):

2019-10-01  Keith Miller  <keith_miller@apple.com>

        Add support for the Wasm multi-value proposal
        https://bugs.webkit.org/show_bug.cgi?id=202250

        Reviewed by Saam Barati.

        This patch adds a new way to run stress tests via the .wat text
        format. By attaching an asm.js compiled version of the wabt tool
        we can easily create wat files programatically and convert them
        into a wasm blob to compile. To make this easy there is a
        wabt-wrapper.js module file that exports two useful functions that
        correspond to WebAssembly.compile and WebAssembly.instantiate.

        * wasm.yaml:
        * wasm/function-tests/if-no-else-non-void.js:
        * wasm/js-api/web-assembly-instantiate.js:
        (assert.asyncTest.async.test):
        (assert.asyncTest):
        * wasm/libwabt.js: Added.
        (WabtModule):
        (set get if):
        * wasm/references/func_ref.js:
        * wasm/references/validation.js:
        (assert.throws):
        * wasm/spec-harness/index.js:
        * wasm/spec-tests/block.wast.js:
        * wasm/spec-tests/br.wast.js:
        * wasm/spec-tests/br_if.wast.js:
        * wasm/spec-tests/call.wast.js:
        * wasm/spec-tests/call_indirect.wast.js:
        * wasm/spec-tests/func.wast.js:
        * wasm/spec-tests/if.wast.js:
        * wasm/spec-tests/loop.wast.js:
        * wasm/spec-tests/type.wast.js:
        * wasm/stress/js-wasm-call-many-return-types-on-stack-no-args.js: Added.
        (buildWat):
        * wasm/stress/js-wasm-js-varying-arities.js: Added.
        (paramForwarder):
        * wasm/stress/wasm-js-call-many-return-types-on-stack-no-args.js: Added.
        (buildWat):
        * wasm/stress/wasm-js-multi-value-exception-in-iterator.js: Added.
        (buildWat.throwError):
        (buildWat.throwErrorInIterator):
        (buildWat.tooManyValues):
        (buildWat.tooFewValues):
        (buildWat):
        * wasm/stress/wasm-wasm-call-indirect-many-return-types-on-stack.js: Added.
        (buildWat):
        * wasm/stress/wasm-wasm-call-many-return-types-on-stack-no-args.js: Added.
        (buildWat):
        * wasm/wabt-wrapper.js: Added.
        (export.compile):
        * wasm/wast-tests/br-if-at-end-of-block.wasm: Added.
        * wasm/wast-tests/br-if-at-end-of-block.wast: Added.
        * wasm/wast-tests/harness.js:
        (async.runWasmFile):
        * wasm/wast-tests/single-param-loop-signature.wasm: Added.
        * wasm/wast-tests/single-param-loop-signature.wast: Added.

2019-09-30  Tadeu Zagallo  <tzagallo@apple.com>

        Make assertion in JSObject::putOwnDataProperty more precise
        https://bugs.webkit.org/show_bug.cgi?id=202379
        <rdar://problem/49515980>

        Reviewed by Yusuke Suzuki.

        * stress/object-assign-target-proto-setter.js: Added.
        (get Object):

2019-09-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] HeapSnapshotBuilder m_rootData should be protected with a lock too
        https://bugs.webkit.org/show_bug.cgi?id=202389
        <rdar://problem/50717564>

        Reviewed by Mark Lam.

        * stress/heap-analyzer-taking-lock.js: Added.

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

        Inline caching is wrong for custom accessors and custom values
        https://bugs.webkit.org/show_bug.cgi?id=201994
        <rdar://problem/50850326>

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/custom-accessor-materialized.js: Added.
        (assert):
        (test4.get const):
        * microbenchmarks/custom-accessor-thin-air.js: Added.
        (assert):
        (test5.get const):
        (test5.get proto):
        * microbenchmarks/custom-accessor.js: Added.
        (assert):
        (test3.get const):
        * microbenchmarks/custom-value-2.js: Added.
        (assert):
        (test1.getMultiline):
        (test1):
        * microbenchmarks/custom-value.js: Added.
        (assert):
        (test1.getMultiline):
        (test1):
        * stress/custom-accessor-delete-1.js: Added.
        (assert):
        (test3.get const):
        * stress/custom-accessor-delete-2.js: Added.
        (assert):
        (test4.get const):
        * stress/custom-accessor-delete-3.js: Added.
        (assert):
        (test5.get const):
        (test5.get proto):
        * stress/custom-value-delete-property-1.js: Added.
        (assert):
        (test1.getMultiline):
        (test1):
        * stress/custom-value-delete-property-2.js: Added.
        (test2.foo):
        (test2):
        * stress/custom-value-delete-property-3.js: Added.
        (test6.foo):
        (test6):

2019-09-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] AI folds CompareEq wrongly when it sees proven Boolean and Number
        https://bugs.webkit.org/show_bug.cgi?id=202382
        <rdar://problem/52669112>

        Reviewed by Saam Barati.

        * stress/compare-eq-bool-number-folding.js: Added.
        (test):

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

        [JSC] Keep JSString::value(ExecState*)'s result as String instead of `const String&`
        https://bugs.webkit.org/show_bug.cgi?id=202330

        Reviewed by Saam Barati.

        * stress/to-lower-case-gc-stress.js: Added.

2019-09-27  Alexey Shvayka  <shvaikalesh@gmail.com>

        Non-standard Error properties should not be enumerable
        https://bugs.webkit.org/show_bug.cgi?id=198975

        Reviewed by Ross Kirsling.

        * ChakraCore/test/Error/NativeErrors_v4.baseline-jsc: Adjust expectations.
        * microbenchmarks/let-for-in.js: Adjust test.
        * test262/expectations.yaml: Mark 6 test cases as passing.

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

        [JSC] DFG recursive-tail-call optimization should not emit jump to call-frame with varargs
        https://bugs.webkit.org/show_bug.cgi?id=202299
        <rdar://problem/52669116>

        Reviewed by Saam Barati.

        * stress/recursive-tail-call-optimization-should-not-jump-into-call-frame-with-varargs-simple.js: Added.
        (foo):
        (test):
        * stress/recursive-tail-call-optimization-should-not-jump-into-call-frame-with-varargs.js: Added.
        (foo):
        (C1.prototype.baz):
        (C1):
        (bar):
        (noInline.bar.goo):
        (C2.prototype.baz):
        (C2):
        (test):

2019-09-26  Alexey Shvayka  <shvaikalesh@gmail.com>

        toExponential, toFixed, and toPrecision should allow arguments up to 100
        https://bugs.webkit.org/show_bug.cgi?id=199163

        Reviewed by Ross Kirsling.

        * ChakraCore/test/Number/toString_3.baseline-jsc:
        * ChakraCore/test/es5/exceptions3.baseline-jsc:
        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-09-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        [ES6] Come up with a test for Proxy.[[GetOwnProperty]] that tests the isExtensible error when the  result of the trap is undefined
        https://bugs.webkit.org/show_bug.cgi?id=154376

        Reviewed by Ross Kirsling.

        Adds 2 test cases:
        1. If [[GetOwnProperty]] trap result is `undefined` and Proxy's target is non-extensible, TypeError is thrown.
        2. If [[GetOwnProperty]] trap result is `undefined` and Proxy's target is another Proxy, its "isExtensible" trap is called.

        * stress/proxy-get-own-property.js:

2019-09-24  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueBitRShift into DFG
        https://bugs.webkit.org/show_bug.cgi?id=192663

        Reviewed by Robin Morisset.

        * stress/big-int-right-shift-jit-osr.js: Added.
        * stress/big-int-right-shift-jit-untyped.js: Added.
        * stress/big-int-right-shift-jit.js: Added.
        * stress/value-rshift-ai-rule.js: Added.

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

        Array methods should throw TypeError upon attempting to modify a string
        https://bugs.webkit.org/show_bug.cgi?id=201910

        Reviewed by Keith Miller.

        * stress/array-methods-should-not-modify-string.js: Added.

        * mozilla/js1_6/Array/regress-304828.js:
        Fix test. Original copy was changed similarly seven years ago:
        https://searchfox.org/mozilla-central/source/js/src/tests/non262/Array/regress-304828.js

        * stress/phantom-insertion-live-range-should-agree-with-arguments-forwarding.js:
        Fix test. `Object.__proto__ = []; Object.shift();` shouldn't be valid JS.

2019-09-23  Mark Lam  <mark.lam@apple.com>

        Lazy JSGlobalObject property materialization should not use putDirectWithoutTransition.
        https://bugs.webkit.org/show_bug.cgi?id=202122
        <rdar://problem/55535249>

        Reviewed by Yusuke Suzuki.

        * stress/lazy-global-object-property-materialization-should-not-putDirectWithoutTransition.js: Added.

2019-09-23  Caio Lima  <ticaiolima@gmail.com>

        Skip stress/regexp-unicode-surrogate-pair-increment-should-involve-length-check.js into ARMv7 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=202113

        Unreviewed test gardening, skipped test in ARMv7 and MIPS.

        It is going to be fixed in
        https://bugs.webkit.org/show_bug.cgi?id=202041

        * stress/regexp-unicode-surrogate-pair-increment-should-involve-length-check.js:

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

        [JSC] Int52Rep(DoubleRepAnyIntUse) should not call operation function
        https://bugs.webkit.org/show_bug.cgi?id=202072

        Reviewed by Mark Lam.

        * stress/int52rep-with-double-checks-int52-range.js: Added.
        (shouldBe):
        (test):

2019-09-21  Caio Lima  <ticaiolima@gmail.com>

        stress/test-out-of-memory.js is not throwing OOM into ARMv7 and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=202011

        Reviewed by Mark Lam.

        We are skipping this test into MIPS and ARMv7 because some of its assumptions
        are not valid for them. The current behavior of the test in those architectures
        is that it does not throw during `new ArrayBuffer(1000)` allocation site,
        because eden collection keeps happening between iterations. The collection
        is triggered on those architectures because the amount of stress 
        `new Promise` generates into GC limits is not enough to avoid them
        while loop is executing.

        Changing the size of `UInt8Array` from `80000000` to `160000000` can
        be an alternative fix to avoid collection happening during `ArrayBuffer`
        allocation loop, but we can't guarantee this test is always going to execute
        without error when Gigacage is disabled, given we can reach an OOM state in
        some allocations that need to succeed, making this test flaky for those
        architectures.

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

2019-09-21  Tadeu Zagallo  <tzagallo@apple.com>

        AccessCase should strongly visit its dependencies while on stack
        https://bugs.webkit.org/show_bug.cgi?id=201986
        <rdar://problem/55521953>

        Reviewed by Saam Barati and Yusuke Suzuki.

        * stress/ftl-put-by-id-setter-exception-interesting-live-state-2.js: Added.
        (foo):
        (warmup):

2019-09-20  Saam Barati  <sbarati@apple.com>

        Unreviewed. Make toctou-having-a-bad-time-new-array.js run for less time because it's timing out on the debug bots.

        * stress/toctou-having-a-bad-time-new-array.js:

2019-09-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG op_call_varargs should not assume that one-previous-local of freeReg is usable
        https://bugs.webkit.org/show_bug.cgi?id=202014

        Reviewed by Saam Barati.

        * stress/call-varargs-inlining-should-not-clobber-previous-to-free-register.js: Added.
        (__v0):

2019-09-19  Tadeu Zagallo  <tzagallo@apple.com>

        Syntax checker should report duplicate __proto__ properties
        https://bugs.webkit.org/show_bug.cgi?id=201897
        <rdar://problem/53201788>

        Reviewed by Mark Lam.

        * stress/syntax-checker-duplicate-underscore-proto.js: Added.
        (catch):

2019-09-18  Saam Barati  <sbarati@apple.com>

        TOCTOU bug in havingABadTime related assertion in DFGSpeculativeJIT
        https://bugs.webkit.org/show_bug.cgi?id=201953
        <rdar://problem/53803524>

        Reviewed by Yusuke Suzuki.

        * stress/toctou-having-a-bad-time-new-array.js: Added.
        (let.code):

2019-09-18  Saam Barati  <sbarati@apple.com>

        Phantom insertion phase may disagree with arguments forwarding about live ranges
        https://bugs.webkit.org/show_bug.cgi?id=200715
        <rdar://problem/54301717>

        Reviewed by Yusuke Suzuki.

        * stress/phantom-insertion-live-range-should-agree-with-arguments-forwarding.js: Added.
        (main.v23):
        (main.try.v43):
        (main.):
        (main):

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

        [JSC] Generator should have internal fields
        https://bugs.webkit.org/show_bug.cgi?id=201159

        Reviewed by Keith Miller.

        * stress/create-generator.js: Added.
        (shouldBe):
        (test.generator):
        (test):
        * stress/generator-construct-failure.js: Added.
        (shouldThrow):
        (TypeError):
        * stress/generator-prototype-change.js: Added.
        (shouldBe):
        (gen):
        * stress/generator-prototype-closure.js: Added.
        (shouldBe):
        (test.gen):
        (test):
        * stress/object-assign-fast-path.js:

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

        Follow-up after String.codePointAt optimization
        https://bugs.webkit.org/show_bug.cgi?id=201889

        Reviewed by Saam Barati.

        * stress/string-char-at-bad-type.js: Added.
        (shouldBe):
        (object.toString):
        (test):
        * stress/string-char-code-at-bad-type.js: Added.
        (shouldBe):
        (object.toString):
        (test):
        * stress/string-code-point-at-bad-type.js: Added.
        (shouldBe):
        (object.toString):
        (test):

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

        [JSC] CheckArray+NonArray is not filtering out Array in AI
        https://bugs.webkit.org/show_bug.cgi?id=201857
        <rdar://problem/54194820>

        Reviewed by Keith Miller.

        * stress/check-array-with-non-array-does-not-filter-arrays.js: Added.
        (foo):

2019-09-17  Saam Barati  <sbarati@apple.com>

        CheckArray on DirectArguments/ScopedArguments does not filter out slow put array storage
        https://bugs.webkit.org/show_bug.cgi?id=201853
        <rdar://problem/53805461>

        Reviewed by Yusuke Suzuki.

        * stress/direct-arguments-check-array-filter-type.js: Added.
        (foo):

2019-09-16  Tadeu Zagallo  <tzagallo@apple.com>

        Wasm StreamingParser should validate that number of functions matches number of declarations
        https://bugs.webkit.org/show_bug.cgi?id=201850
        <rdar://problem/55290186>

        Reviewed by Yusuke Suzuki.

        * wasm/regress/validate-number-of-functions-match-declarations.js: Added.
        (catch):

2019-09-16  Michael Saboff  <msaboff@apple.com>

        [JSC] Perform check again when we found non-BMP characters
        https://bugs.webkit.org/show_bug.cgi?id=201647

        Reviewed by Yusuke Suzuki.

        * stress/regexp-unicode-surrogate-pair-increment-should-involve-length-check.js: Added.
        * stress/regexp-unicode-within-string.js: Updated test to eliminate the bogus print().
        (testRegExpInbounds):

2019-09-16  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Add missing syntax errors for await in function parameter default expressions
        https://bugs.webkit.org/show_bug.cgi?id=201615

        Reviewed by Darin Adler.

        * stress/async-await-reserved-word.js:
        * stress/async-await-syntax.js:
        Add test cases.

        * test262/expectations.yaml:
        Mark newly-passing test cases.

2019-09-16  Saam Barati  <sbarati@apple.com>

        JSObject::putInlineSlow should not ignore "__proto__" for Proxy
        https://bugs.webkit.org/show_bug.cgi?id=200386
        <rdar://problem/53854946>

        Reviewed by Yusuke Suzuki.

        * stress/proxy-__proto__-in-prototype-chain.js: Added.
        * stress/proxy-property-replace-structure-transition.js: Added.

2019-09-13  Alexey Shvayka  <shvaikalesh@gmail.com>

        Date.prototype.toJSON does not execute steps 1-2
        https://bugs.webkit.org/show_bug.cgi?id=105282

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 2 test cases as passing.

2019-09-12  Mark Lam  <mark.lam@apple.com>

        Harden JSC against the abuse of runtime options.
        https://bugs.webkit.org/show_bug.cgi?id=201597
        <rdar://problem/55167068>

        Reviewed by Filip Pizlo.

        Remove the call to forceGCSlowPaths().  This utility function will be removed.
        The modern way to set the required option is to use //@ requireOptions.

        * stress/ftl-try-catch-oom-error-lazy-slow-path.js:

2019-09-11  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add StringCodePointAt intrinsic
        https://bugs.webkit.org/show_bug.cgi?id=201673

        Reviewed by Michael Saboff.

        * stress/string-char-at-constant-index-out-of-range.js: Added.
        (shouldBe):
        (test):
        * stress/string-char-code-at-constant-index-out-of-range.js: Added.
        (shouldBe):
        (test):
        * stress/string-code-point-at--out-of-range.js: Added.
        (shouldBe):
        (test):
        * stress/string-code-point-at-basic.js: Added.
        (test):
        * stress/string-code-point-at-constant-index-out-of-range.js: Added.
        (shouldBe):
        (test):
        * stress/string-code-point-at-constant-int32-max-index-out-of-range.js: Added.
        (shouldBe):
        (test):
        * stress/string-code-point-at-constant-surrogate-pair.js: Added.
        (shouldBe):
        (test):
        (breaking):
        * stress/string-code-point-at-surrogate-pair.js: Added.
        (shouldBe):
        * stress/string-code-point-at.js: Added.
        (shouldBe):

2019-09-10  Michael Saboff  <msaboff@apple.com>

        JSC crashes due to stack overflow while building RegExp
        https://bugs.webkit.org/show_bug.cgi?id=201649

        Reviewed by Yusuke Suzuki.

        New regression test.

        * stress/regexp-bol-optimize-out-of-stack.js: Added.
        (test):
        (catch):

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

        [WebAssembly] Use StreamingParser in existing Wasm::BBQPlan
        https://bugs.webkit.org/show_bug.cgi?id=189043

        Reviewed by Keith Miller.

        The offset performing the validation becomes a bit different.
        The offset 0 is nice since it is the starting offset of the Module header signature compared to the offset 8.

        * wasm/js-api/version.js:

2019-09-07  Keith Miller  <keith_miller@apple.com>

        OSR entry into wasm misses some contexts
        https://bugs.webkit.org/show_bug.cgi?id=201569

        Reviewed by Yusuke Suzuki.

        Add a new harness and wast and the generated wasm file for
        testing. The idea long term is to make it easy to test by creating
        a C file and converting it to a wast then modify that to produce a
        test.

        * wasm.yaml:
        * wasm/wast-tests/harness.js: Added.
        (async.runWasmFile):
        * wasm/wast-tests/osr-entry-inner-loop-branch-above-no-consts.wasm: Added.
        * wasm/wast-tests/osr-entry-inner-loop-branch-above-no-consts.wast: Added.
        * wasm/wast-tests/osr-entry-inner-loop-branch-above.wasm: Added.
        * wasm/wast-tests/osr-entry-inner-loop-branch-above.wast: Added.
        * wasm/wast-tests/osr-entry-inner-loop.wasm: Added.
        * wasm/wast-tests/osr-entry-inner-loop.wast: Added.
        * wasm/wast-tests/osr-entry-multiple-enclosed-contexts.wasm: Added.
        * wasm/wast-tests/osr-entry-multiple-enclosed-contexts.wast: Added.

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

        [JSC] Promise resolve/reject functions should be created more efficiently
        https://bugs.webkit.org/show_bug.cgi?id=201488

        Reviewed by Mark Lam.

        * microbenchmarks/promise-creation-many.js: Added.
        (executor):

2019-09-09  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed JSC test gardening.

        * stress/constructFunctionSkippingEvalEnabledCheck-should-throw-out-of-memory-error.js:
        This test allocates a 2GB string before it goes out and tests
        out-of-memory exception when appending other strings to it. As such,
        skip the test on memory-limited platforms.

2019-09-07  Mark Lam  <mark.lam@apple.com>

        The jsc shell should allow disabling of the Gigacage for testing purposes.
        https://bugs.webkit.org/show_bug.cgi?id=201579

        Reviewed by Michael Saboff.

        Unskip the tests now.

        * stress/disable-gigacage-arrays.js:
        * stress/disable-gigacage-strings.js:
        * stress/disable-gigacage-typed-arrays.js:

2019-09-07  Mark Lam  <mark.lam@apple.com>

        Gardening: temporarily skipping these tests until the fix can be reviewed and landed.

        Not reviewed.

        See https://bugs.webkit.org/show_bug.cgi?id=201579 for the fix.

        * stress/disable-gigacage-arrays.js:
        * stress/disable-gigacage-strings.js:
        * stress/disable-gigacage-typed-arrays.js:

2019-09-07  Mark Lam  <mark.lam@apple.com>

        Gardening: speculative test fix to green bots [attempt #2].
        https://bugs.webkit.org/show_bug.cgi?id=201529
        <rdar://problem/53935772>

        Not reviewed.

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

2019-09-06  Mark Lam  <mark.lam@apple.com>

        Gardening: speculative test fix to green bots.
        https://bugs.webkit.org/show_bug.cgi?id=201529
        <rdar://problem/53935772>

        Not reviewed.

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

2019-09-06  Ross Kirsling  <ross.kirsling@sony.com>

        Math.round() produces wrong result for value prior to 0.5
        https://bugs.webkit.org/show_bug.cgi?id=185115

        Reviewed by Saam Barati.

        * stress/math-round-basics.js:
        Add positive/negative test cases.

        * test262/expectations.yaml:
        Mark test passing.

2019-09-06  Mark Lam  <mark.lam@apple.com>

        Move web-assembly-constructors-should-not-override-global-object-property.js below JSTests/wasm/stress.
        https://bugs.webkit.org/show_bug.cgi?id=201551

        Reviewed by Tadeu Zagallo.

        Ports that don't support WASM will always fail this test if it stays in JSTests/stress.

        * stress/web-assembly-constructors-should-not-override-global-object-property.js: Removed.
        * wasm/stress/web-assembly-constructors-should-not-override-global-object-property.js: Copied from JSTests/stress/web-assembly-constructors-should-not-override-global-object-property.js.

2019-09-06  Mark Lam  <mark.lam@apple.com>

        Fix bmalloc::Allocator:tryAllocate() to return null on failure to allocate.
        https://bugs.webkit.org/show_bug.cgi?id=201529
        <rdar://problem/53935772>

        Reviewed by Yusuke Suzuki.

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

2019-09-05  Tadeu Zagallo  <tzagallo@apple.com>

        LazyClassStructure::setConstructor should not store the constructor to the global object
        https://bugs.webkit.org/show_bug.cgi?id=201484
        <rdar://problem/50400451>

        Reviewed by Yusuke Suzuki.

        * stress/web-assembly-constructors-should-not-override-global-object-property.js: Added.

2019-09-05  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Do not use FTLOutput::weakPointer directly
        https://bugs.webkit.org/show_bug.cgi?id=201495

        Reviewed by Filip Pizlo.

        * stress/create-promise-weak-pointer.js: Added.
        (foo):

2019-09-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make Promise implementation faster
        https://bugs.webkit.org/show_bug.cgi?id=200898

        Reviewed by Saam Barati.

        * ChakraCore/test/UnitTestFramework/UnitTestFramework.js:
        (assert.assert.return.throws):
        * modules/breaking-builtin-promise-then-does-not-break-internal-promise.js: Added.
        * modules/breaking-builtin-promise-then-does-not-break-internal-promise/test.js: Added.
        * stress/constructor-kind-naked-should-not-be-applied-to-inner-functions.js: Added.
        (shouldThrow):
        (new.Promise):
        (shouldThrow.Promise):
        * stress/create-promise-should-respect-promise-realm.js: Added.
        (shouldBe):
        (other.new.OtherPromise):
        (DerivedOtherPromise):
        (i.promise.new.DerivedOtherPromise):
        (createPromise):
        * stress/derived-promise-constructor-class-syntax-prototype-replace-attempt.js: Added.
        (shouldBe):
        (DerivedPromise):
        (i.array.push.new.DerivedPromise):
        (promise.new.DerivedPromise):
        * stress/derived-promise-constructor-inlined.js: Added.
        (shouldBe):
        (DerivedPromise):
        (i.array.push.new.DerivedPromise):
        (DerivedPromise.all.array.then):
        * stress/derived-promise-prototype-replaced.js: Added.
        (shouldBe):
        (DerivedPromise):
        (i.array.push.new.DerivedPromise):
        (promise.new.DerivedPromise):
        * stress/internal-promise-constructor-not-confusing.js: Added.
        (shouldBe):
        (InternalPromise.vm.createBuiltin):
        (DerivedPromise):
        * stress/internal-promise-is-not-exposed.js: Added.
        (shouldBe):
        * stress/new-promise-should-respect-promise-realm.js: Added.
        (shouldBe):
        (other.new.OtherPromise):
        (createPromise):
        * stress/promise-cannot-be-called.js:
        (shouldThrow):
        * stress/promise-capability-fast-path.js: Added.
        (shouldBe):
        (i.array.push.new.Promise):
        (i.array.i.then):
        * stress/promise-capability-slow-path.js: Added.
        (shouldBe):
        (Promise.prototype.then):
        (i.array.push.new.Promise):
        (i.array.i.then):
        * stress/promise-capability-then-slow-path.js: Added.
        (shouldBe):
        (DerivedPromise):
        (DerivedPromise.prototype.then):
        (i.array.push.new.DerivedPromise):
        (i.array.i.then):
        * stress/promise-constructor-inlined.js: Added.
        (shouldBe):
        (i.array.push.new.Promise):
        (Promise.all.array.then):
        * stress/promise-constructor-transition-from-new-promise-to-create-promise.js: Added.
        (shouldBe):
        (DerivedPromise):
        (DerivedPromise2):
        (i.array.push.new.DerivedPromise):
        (i.array2.push.new.DerivedPromise2):
        * stress/without-promise-functions.js: Added.
        (shouldBe):
        (async):

2019-09-03  Mark Lam  <mark.lam@apple.com>

        Assertions in JSArrayBufferView::byteOffset() are only valid for the mutator thread.
        https://bugs.webkit.org/show_bug.cgi?id=201309
        <rdar://problem/54832121>

        Reviewed by Yusuke Suzuki.

        * stress/JSArrayBufferView-byteOffset-is-racy-from-compiler-thread.js: Added.

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

        [JSC] Generate new.target register only when it is used
        https://bugs.webkit.org/show_bug.cgi?id=201335

        Reviewed by Mark Lam.

        * stress/ensure-new-register-allocated.js: Added.
        (shouldBe):
        (basic):
        (arrow):
        (Base):
        (Derived):
        (evaluate):

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

        [JSC] DFG ByteCodeParser should not copy JIT-related part of SimpleJumpTable
        https://bugs.webkit.org/show_bug.cgi?id=201331

        Reviewed by Mark Lam.

        * stress/simple-jump-table-copy.js: Added.
        (let.code):
        (g2):

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

        [JSC] DFG inlining CheckBadCell slow path does not assume result VirtualRegister can be invalid
        https://bugs.webkit.org/show_bug.cgi?id=201332

        Reviewed by Mark Lam.

        This test is very flaky, it is hard to reproduce.

        * stress/setter-inlining-resulting-bad-cell-result-virtual-register-should-be-invalid.js: Added.
        (code):

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

        [JSC] Repatch should construct CallCases and CasesValue at the same time
        https://bugs.webkit.org/show_bug.cgi?id=201325

        Reviewed by Saam Barati.

        * stress/repatch-switch.js: Added.
        (main.f2.f0):
        (main.f2.f3):
        (main.f2.f1):
        (main.f2):
        (main):

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

        [JSC] ObjectAllocationSinkingPhase wrongly deals with always-taken branches during interpretation
        https://bugs.webkit.org/show_bug.cgi?id=198650

        Reviewed by Saam Barati.

        * stress/object-allocation-sinking-interpretation-can-interpret-edges-that-can-be-proven-unreachable-in-ai.js:
        (main.v0):
        (main):

2019-08-28  Mark Lam  <mark.lam@apple.com>

        DFG/FTL: We should prefetch structures and do a loadLoadFence before doing PrototypeChainIsSane checks.
        https://bugs.webkit.org/show_bug.cgi?id=201281
        <rdar://problem/54028228>

        Reviewed by Yusuke Suzuki and Saam Barati.

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

2019-08-28  Mark Lam  <mark.lam@apple.com>

        Placate exception check validation in DFG's operationHasGenericProperty().
        https://bugs.webkit.org/show_bug.cgi?id=201245
        <rdar://problem/54777512>

        Reviewed by Robin Morisset.

        * stress/missing-exception-check-in-operationHasGenericProperty.js: Added.

2019-08-27  Mark Lam  <mark.lam@apple.com>

        constructFunctionSkippingEvalEnabledCheck() should use tryMakeString() and check for OOM.
        https://bugs.webkit.org/show_bug.cgi?id=201196
        <rdar://problem/54703775>

        Reviewed by Yusuke Suzuki.

        * stress/constructFunctionSkippingEvalEnabledCheck-should-throw-out-of-memory-error.js: Added.

2019-08-26  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Ensure x?.y ?? z is fast
        https://bugs.webkit.org/show_bug.cgi?id=200875

        Reviewed by Yusuke Suzuki.

        * stress/nullish-coalescing.js:

2019-08-23  Tadeu Zagallo  <tzagallo@apple.com>

        Remove MaximalFlushInsertionPhase
        https://bugs.webkit.org/show_bug.cgi?id=201036

        Reviewed by Saam Barati.

        Remove all the references to maximal flush

        * stress/arith-ceil-on-various-types.js:
        (checkCompileCountForUselessNegativeZero):
        * stress/arith-floor-on-various-types.js:
        (checkCompileCountForUselessNegativeZero):
        * stress/arith-negate-on-various-types.js:
        (checkCompileCountForUselessNegativeZero):
        * stress/arith-round-on-various-types.js:
        (checkCompileCountForUselessNegativeZero):
        * stress/arith-trunc-on-various-types.js:
        (checkCompileCountForUselessNegativeZero):
        * stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js:
        * stress/has-indexed-property-should-accept-non-int32.js:
        * stress/has-indexed-property-with-worsening-array-mode.js:
        * stress/known-int32-cant-be-used-across-bytecode-boundary.js:
        * stress/read-dead-bytecode-locals-in-must-handle-values1.js:
        * stress/read-dead-bytecode-locals-in-must-handle-values2.js:
        * stress/rest-parameter-many-arguments.js:
        * stress/set-argument-maybe-maximal-flush-should-not-extend-liveness-2.js:
        * stress/set-argument-maybe-maximal-flush-should-not-extend-liveness.js:
        * stress/to-index-string-should-not-assume-incoming-value-is-uint32.js:

2019-08-23  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Do not overwrite argument registers in jsCallEntrypoint
        https://bugs.webkit.org/show_bug.cgi?id=200952

        Reviewed by Saam Barati.

        * wasm/references/func_ref.js:
        (assert.throws):

2019-08-22  Justin Michaud  <justin_michaud@apple.com>

        Add missing exception check in canonicalizeLocaleList
        https://bugs.webkit.org/show_bug.cgi?id=201021

        Reviewed by Mark Lam.

        * stress/missing-exception-check-in-canonicalizeLocaleList.js: Added.
        (catch):

2019-08-21  Mark Lam  <mark.lam@apple.com>

        Wasm::FunctionParser is failing to enforce maxFunctionLocals.
        https://bugs.webkit.org/show_bug.cgi?id=201016
        <rdar://problem/54579911>

        Reviewed by Yusuke Suzuki.

        * wasm/stress/too-many-locals.js: Added.
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.catch):

2019-08-21  Ross Kirsling  <ross.kirsling@sony.com>

        JSTests/stress/optional-chaining should not call shouldThrowTypeError in a loop
        https://bugs.webkit.org/show_bug.cgi?id=200965

        Reviewed by Saam Barati.

        This has nothing to do with ?. in particular, but throwing >1M type errors takes 100s in Debug on my machine.
        The main idea here was to JITify the simple success cases, so let's not run the simple failures so many times.

        * stress/optional-chaining.js:

2019-08-21  Michael Saboff  <msaboff@apple.com>

        [JSC] incorrent JIT lead to StackOverflow
        https://bugs.webkit.org/show_bug.cgi?id=197823

        Reviewed by Tadeu Zagallo.

        New test.

        * stress/bound-function-stack-overflow.js: Added.
        (foo):
        (catch):

2019-08-20  Justin Michaud  <justin_michaud@apple.com>

        Identify memcpy loops in b3
        https://bugs.webkit.org/show_bug.cgi?id=200181

        Reviewed by Saam Barati.

        * microbenchmarks/memcpy-loop.js: Added.
        (doTest):
        (let.arr1):
        * microbenchmarks/memcpy-typed-loop-large.js: Added.
        (doTest):
        (let.arr1.new.Int32Array.1000000.let.arr2.new.Int32Array.1000000):
        (arr2):
        * microbenchmarks/memcpy-typed-loop-small.js: Added.
        (doTest):
        (16.let.arr1.new.Int32Array.size.let.arr2.new.Int32Array.size):
        (16.arr2):
        * microbenchmarks/memcpy-typed-loop-speculative.js: Added.
        (doTest):
        (let.arr1.new.Int32Array.10.let.arr2.new.Int32Array.10):
        (arr2):
        * microbenchmarks/memcpy-wasm-large.js: Added.
        (typeof.WebAssembly.string_appeared_here.eq):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        * microbenchmarks/memcpy-wasm-medium.js: Added.
        (typeof.WebAssembly.string_appeared_here.eq):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        * microbenchmarks/memcpy-wasm-small.js: Added.
        (typeof.WebAssembly.string_appeared_here.eq):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        * microbenchmarks/memcpy-wasm.js: Added.
        (typeof.WebAssembly.string_appeared_here.eq):
        (typeof.WebAssembly.string_appeared_here.const.1.new.WebAssembly.Instance.new.WebAssembly.Module.new.Uint8Array):
        * stress/memcpy-typed-loops.js: Added.
        (noLoop):
        (invalidStart):
        (const.size.10.let.arr1.new.Int32Array.size.let.arr2.new.Int32Array.size):
        (arr2):
        * wasm/function-tests/memcpy-wasm-loop.js: Added.
        (0.GetLocal.3.I32Const.1.I32Add.SetLocal.3.Br.1.End.End.End.WebAssembly):
        (string_appeared_here):

2019-08-20  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Array.prototype.toString should not get "join" function each time
        https://bugs.webkit.org/show_bug.cgi?id=200905

        Reviewed by Mark Lam.

        * stress/array-prototype-join-change.js: Added.
        (shouldBe):
        (array2.join):
        (DerivedArray):
        (DerivedArray.prototype.join):
        (array3.__proto__.join):
        (Array.prototype.join):

2019-08-20  Justin Michaud  <justin_michaud@apple.com>

        Fix InBounds speculation of typed array PutByVal and add extra step to integer range optimization to search for equality relationships on the RHS value
        https://bugs.webkit.org/show_bug.cgi?id=200782

        Reviewed by Saam Barati.

        Skip long memcpy test on debug, and try to fix flakiness for recompilation count tests by disabling cjit.

        * microbenchmarks/memcpy-typed-loop.js:
        * stress/int8-repeat-in-then-out-of-bounds.js:

2019-08-19  Alexey Shvayka  <shvaikalesh@gmail.com>

        Proxy constructor should throw if handler is revoked Proxy
        https://bugs.webkit.org/show_bug.cgi?id=198755

        Reviewed by Saam Barati.

        * stress/proxy-revoke.js: Adjust error message.
        * test262/expectations.yaml: Mark 2 test cases as passing.

2019-08-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] OSR entry to Wasm OMG
        https://bugs.webkit.org/show_bug.cgi?id=200362

        Reviewed by Michael Saboff.

        * wasm/stress/osr-entry-basic.js: Added.
        (instance.exports.loop):
        * wasm/stress/osr-entry-many-locals-f32.js: Added.
        * wasm/stress/osr-entry-many-locals-f64.js: Added.
        * wasm/stress/osr-entry-many-locals-i32.js: Added.
        * wasm/stress/osr-entry-many-locals-i64.js: Added.
        * wasm/stress/osr-entry-many-stacks-f32.js: Added.
        * wasm/stress/osr-entry-many-stacks-f64.js: Added.
        * wasm/stress/osr-entry-many-stacks-i32.js: Added.
        * wasm/stress/osr-entry-many-stacks-i64.js: Added.

2019-08-19  Alexey Shvayka  <shvaikalesh@gmail.com>

        Date.prototype.toJSON throws if toISOString returns an object
        https://bugs.webkit.org/show_bug.cgi?id=198495

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-08-19  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG DataView get/set optimization should take care of the case little-endian flag is JSEmpty
        https://bugs.webkit.org/show_bug.cgi?id=200899
        <rdar://problem/54073341>

        Reviewed by Mark Lam.

        * stress/data-view-get-dfg-should-handle-empty-constant.js: Added.
        (i.new.Promise):
        * stress/data-view-set-dfg-should-handle-empty-constant.js: Added.
        (i.new.Promise):

2019-08-19  Michael Saboff  <msaboff@apple.com>

        Webkit jsc Crash in RegExp::matchInline (this=<optimized out>
        https://bugs.webkit.org/show_bug.cgi?id=197090

        Reviewed by Yusuke Suzuki.

        New test.

        * stress/regexp-nonconsuming-counted-parens.js: Added.

2019-08-18  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Correct a->an in error messages and API docblocks
        https://bugs.webkit.org/show_bug.cgi?id=200833

        Reviewed by Don Olmstead.

        * ChakraCore/test/UnitTestFramework/UnitTestFramework.js:
        (assert.assert.return.throws):
        * stress/promise-finally-should-accept-non-promise-objects.js:
        * wasm/js-api/table.js:
        (assert.throws):

2019-08-17  Ross Kirsling  <ross.kirsling@sony.com>

        [ESNext] Implement optional chaining
        https://bugs.webkit.org/show_bug.cgi?id=200199

        Reviewed by Yusuke Suzuki.

        * stress/nullish-coalescing.js:
        * stress/optional-chaining.js: Added.
        * stress/tail-call-recognize.js:

2019-08-17  Ross Kirsling  <ross.kirsling@sony.com>

        [ESNext] Support hashbang.
        https://bugs.webkit.org/show_bug.cgi?id=200865

        Reviewed by Mark Lam.

        * stress/hashbang.js: Added.
        * test262/expectations.yaml: Mark 6 cases as passing.

2019-08-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG ToNumber should support Boolean in fixup
        https://bugs.webkit.org/show_bug.cgi?id=200864

        Reviewed by Mark Lam.

        * microbenchmarks/to-number-boolean.js: Added.
        (test):
        * stress/to-number-boolean-int32.js: Added.
        (shouldBe):
        (test):
        (check):
        * stress/to-number-boolean.js: Added.
        (shouldBe):
        (test):
        (check):
        * stress/to-number-int32.js: Added.
        (shouldBe):
        (test):
        (check):

2019-08-16  Mark Lam  <mark.lam@apple.com>

        More missing exception checks in string comparison operators.
        https://bugs.webkit.org/show_bug.cgi?id=200844
        <rdar://problem/54378684>

        Reviewed by Saam Barati.

        * stress/missing-exception-check-in-string-greater-than-compare.js: Added.
        * stress/missing-exception-check-in-string-greater-than-or-equal-compare.js: Added.
        * stress/missing-exception-check-in-string-less-than-compare.js: Added.
        * stress/missing-exception-check-in-string-less-than-or-equal-compare.js: Added.

2019-08-16  Mark Lam  <mark.lam@apple.com>

        CodeBlock destructor should clear all of its watchpoints.
        https://bugs.webkit.org/show_bug.cgi?id=200792
        <rdar://problem/53947800>

        Reviewed by Yusuke Suzuki.

        * stress/codeblock-should-clear-watchpoints-on-destruction.js: Added.

2019-08-16  Justin Michaud  <justin_michaud@apple.com>

        Fix InBounds speculation of typed array PutByVal and add extra step to integer range optimization to search for equality relationships on the RHS value
        https://bugs.webkit.org/show_bug.cgi?id=200782

        Reviewed by Saam Barati.

        * microbenchmarks/int8-out-of-bounds.js: Added.
        (foo):
        * microbenchmarks/memcpy-typed-loop.js: Added.
        (doTest):
        (let.arr1.new.Int32Array.1000.let.arr2.new.Int32Array.1000):
        (arr2):
        * stress/int8-repeat-in-then-out-of-bounds.js: Added.
        (foo):

2019-08-16  Mark Lam  <mark.lam@apple.com>

        [Re-land] ProxyObject should not be allow to access its target's private properties.
        https://bugs.webkit.org/show_bug.cgi?id=200739
        <rdar://problem/53972768>

        Reviewed by Yusuke Suzuki.

        * stress/proxy-should-not-be-allowed-to-access-private-properties-of-target.js: Copied from JSTests/stress/proxy-should-not-be-allowed-to-access-private-properties-of-target.js.
        * stress/proxy-with-private-symbols.js:

2019-08-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Promise.prototype.finally should accept non-promise objects
        https://bugs.webkit.org/show_bug.cgi?id=200829

        Reviewed by Mark Lam.

        * stress/promise-finally-should-accept-non-promise-objects.js: Added.
        (shouldBe):
        (Thenable):
        (Thenable.prototype.then):

2019-08-16  Alexey Shvayka  <shvaikalesh@gmail.com>

        Promise constructor should check argument before [[Construct]]
        https://bugs.webkit.org/show_bug.cgi?id=198976

        Reviewed by Ross Kirsling.

        * stress/create-subclass-structure-may-throw-exception-when-getting-prototype.js: Fix test.
        * stress/create-subclass-structure-might-throw.js: Fix test.
        * test262/expectations.yaml: Mark 2 test cases as passing.

2019-08-16  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r248709.

        Caused test/built-ins/Promise/prototype/finally/this-value-
        non-promise.js to fail on test262 bot

        Reverted changeset:

        "ProxyObject should not be allow to access its target's
        private properties."
        https://bugs.webkit.org/show_bug.cgi?id=200739
        https://trac.webkit.org/changeset/248709

2019-08-15  Alexey Shvayka  <shvaikalesh@gmail.com>

        DateConversion::formatDateTime incorrectly formats negative years
        https://bugs.webkit.org/show_bug.cgi?id=199964

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-08-15  Mark Lam  <mark.lam@apple.com>

        More missing exception checks in String.prototype.
        https://bugs.webkit.org/show_bug.cgi?id=200762
        <rdar://problem/54333896>

        Reviewed by Michael Saboff.

        * stress/missing-exception-check-in-string-lastIndexOf.js: Added.
        * stress/missing-exception-check-in-string-toLower.js: Added.
        * stress/missing-exception-check-in-string-toUpper.js: Added.

2019-08-14  Mark Lam  <mark.lam@apple.com>

        ProxyObject should not be allow to access its target's private properties.
        https://bugs.webkit.org/show_bug.cgi?id=200739
        <rdar://problem/53972768>

        Reviewed by Yusuke Suzuki.

        * stress/proxy-should-not-be-allowed-to-access-private-properties-of-target.js: Added.
        * stress/proxy-with-private-symbols.js: Rebased.

2019-08-14  Mark Lam  <mark.lam@apple.com>

        Missing exception check in string compare.
        https://bugs.webkit.org/show_bug.cgi?id=200743
        <rdar://problem/53975356>

        Reviewed by Michael Saboff.

        * stress/missing-exception-check-in-string-compare.js: Added.

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

        [JSC] Add "jump if (not) undefined or null" bytecode ops
        https://bugs.webkit.org/show_bug.cgi?id=200480

        Reviewed by Saam Barati.

        * stress/destructuring-assignment-require-object-coercible.js:
        * stress/nullish-coalescing.js:

2019-08-05  Michael Saboff  <msaboff@apple.com>

        JSC: assertion failure in SpeculativeJIT::compileGetByValOnIntTypedArray
        https://bugs.webkit.org/show_bug.cgi?id=199997

        Reviewed by Saam Barati.

        New test.

        * stress/typedarray-no-alreadyChecked-assert.js: Added.
        (checkIntArray):
        (checkFloatArray):

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

        [JSC] Support WebAssembly in SamplingProfiler
        https://bugs.webkit.org/show_bug.cgi?id=200329

        Reviewed by Saam Barati.

        * stress/sampling-profiler-wasm-name-section.js: Added.
        (const.compile):
        (platformSupportsSamplingProfiler.vm.isWasmSupported.wasmEntry):
        (platformSupportsSamplingProfiler.vm.isWasmSupported):
        * stress/sampling-profiler-wasm.js: Added.
        (platformSupportsSamplingProfiler.vm.isWasmSupported.wasmEntry):
        (platformSupportsSamplingProfiler.vm.isWasmSupported):
        * stress/sampling-profiler/loop.wasm: Added.
        * stress/sampling-profiler/loop.wast: Added.
        * stress/sampling-profiler/nameSection.wasm: Added.

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

        [JSC] LazyJSValue should be robust for empty JSValue
        https://bugs.webkit.org/show_bug.cgi?id=200388

        Reviewed by Saam Barati.

        * stress/switch-constant-child-becomes-empty.js: Added.
        (foo):

2019-08-01  Yusuke Suzuki  <ysuzuki@apple.com>

        GetterSetter type confusion during DFG compilation
        https://bugs.webkit.org/show_bug.cgi?id=199903

        Reviewed by Mark Lam.

        * stress/cse-propagated-constant-may-not-follow-structure-restrictions.js: Added.

2019-08-01  Ross Kirsling  <ross.kirsling@sony.com>

        Update Test262 (2019.08.01)
        https://bugs.webkit.org/show_bug.cgi?id=200351

        Reviewed by Keith Miller.

        * test262/expectations.yaml:
        * test262/harness/testIntl.js:
        * test262/latest-changes-summary.txt:
        * test262/test/:
        * test262/test262-Revision.txt:

2019-07-30  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Make StructureChain less-tricky by using Auxiliary Buffer
        https://bugs.webkit.org/show_bug.cgi?id=200192

        Reviewed by Saam Barati.

        * stress/structure-chain-stress.js: Added.
        (keys):

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

        [JSC] Increment bytecode age only when SlotVisitor is first-visit
        https://bugs.webkit.org/show_bug.cgi?id=200196

        Reviewed by Robin Morisset.

        * stress/reparsing-unlinked-codeblock.js:

2019-07-29  Justin Michaud  <justin_michaud@apple.com>

        [X86] Emit BT instruction for shift + mask in B3
        https://bugs.webkit.org/show_bug.cgi?id=199891

        Reviewed by Robin Morisset.

        Lower the number of iterations to fix debug timeouts.

        * microbenchmarks/bit-test-load.js:
        (i):

2019-07-27  Justin Michaud  <justin_michaud@apple.com>

        [X86] Emit BT instruction for shift + mask in B3
        https://bugs.webkit.org/show_bug.cgi?id=199891

        Reviewed by Keith Miller.

        * microbenchmarks/bit-test-constant.js: Added.
        (let.glob.0.doTest):
        * microbenchmarks/bit-test-load.js: Added.
        (let.glob.0.let.arr.new.Int32Array.8.doTest):
        (i):
        * microbenchmarks/bit-test-nonconstant.js: Added.
        (let.glob.0.doTest):

2019-07-26  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Potential GC fix for JSPropertyNameEnumerator
        https://bugs.webkit.org/show_bug.cgi?id=200151

        Reviewed by Mark Lam.

        * stress/for-in-stress.js: Added.
        (keys):

2019-07-25  Ross Kirsling  <ross.kirsling@sony.com>

        Legacy numeric literals should not permit separators or BigInt
        https://bugs.webkit.org/show_bug.cgi?id=199984

        Reviewed by Keith Miller.

        * stress/big-int-literals.js:
        * stress/numeric-literal-separators.js:

2019-07-25  Ross Kirsling  <ross.kirsling@sony.com>

        [ESNext] Implement nullish coalescing
        https://bugs.webkit.org/show_bug.cgi?id=200072

        Reviewed by Darin Adler.

        * stress/nullish-coalescing.js: Added.

2019-07-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Three checks are missing in Proxy internal methods
        https://bugs.webkit.org/show_bug.cgi?id=198630

        Reviewed by Darin Adler.

        * stress/proxy-delete.js: Assert isExtensible is called in correct order.
        * test262/expectations.yaml: Mark 6 test cases as passing.

2019-07-23  Justin Michaud  <justin_michaud@apple.com>

        Sometimes we miss removable CheckInBounds
        https://bugs.webkit.org/show_bug.cgi?id=200018

        Reviewed by Saam Barati.

        * microbenchmarks/typed-array-sum.js: Added.
        (doTest):

2019-07-16  Mark Lam  <mark.lam@apple.com>

        ArgumentsEliminationPhase should insert KillStack nodes before PutStack nodes that it adds.
        https://bugs.webkit.org/show_bug.cgi?id=199821
        <rdar://problem/52452328>

        Reviewed by Filip Pizlo.

        * stress/arguments-elimination-should-insert-KillStacks-before-added-PutStacks.js: Added.

2019-07-16  Keith Miller  <keith_miller@apple.com>

        Unreviewed, test262 gardening.

        * test262/expectations.yaml:

2019-07-15  Keith Miller  <keith_miller@apple.com>

        A Possible Issue of Object.create method
        https://bugs.webkit.org/show_bug.cgi?id=199744

        Reviewed by Yusuke Suzuki.

        * stress/object-create-non-object-properties-parameter.js: Added.
        (catch):

2019-07-15  Keith Miller  <keith_miller@apple.com>

        Update test262
        https://bugs.webkit.org/show_bug.cgi?id=199801

        Rubber-stamped by Yusuke Suzuki.

        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/Symbol.toStringTag.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-job-not-active-throws.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-length.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-missing-internal-throws.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-name.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-not-object-throws.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/next-prop-desc.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/FinalizationGroupCleanupIteratorPrototype/proto.js: Added.
        (callback):
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/constructor.js: Added.
        * test262/test/built-ins/FinalizationGroup/gc-has-one-chance-to-call-cleanupCallback.js: Added.
        (cb):
        (fg.new.FinalizationGroup):
        (emptyCells):
        (async.fn):
        (fn.then.async):
        * test262/test/built-ins/FinalizationGroup/instance-extensible.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/length.js: Added.
        * test262/test/built-ins/FinalizationGroup/name.js: Added.
        * test262/test/built-ins/FinalizationGroup/newtarget-prototype-is-not-object.js: Added.
        (newTarget):
        (fn):
        * test262/test/built-ins/FinalizationGroup/prop-desc.js: Added.
        * test262/test/built-ins/FinalizationGroup/proto-from-ctor-realm.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/proto.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype-from-newtarget-abrupt.js: Added.
        (newTarget):
        * test262/test/built-ins/FinalizationGroup/prototype-from-newtarget-custom.js: Added.
        (newTarget):
        * test262/test/built-ins/FinalizationGroup/prototype-from-newtarget.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/Symbol.toStringTag.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/callback-iterator-proto.js: Added.
        (callback):
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/callback-not-callable-throws.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-reference.js: Added.
        (cb):
        (fg.new.FinalizationGroup):
        (emptyCells):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanup-prevented-with-unregister.js: Added.
        (fg.new.FinalizationGroup):
        (fg.cleanupSome.cb):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/cleanupcallback-iterator-proto.js: Added.
        (callback):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/custom-this.js: Added.
        (fn):
        (cb):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/gc-cleanup-not-prevented-with-wr-deref.js: Added.
        (cb):
        (fg.new.FinalizationGroup):
        (emptyCells):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/iterator-dynamic.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/iterator-holdings-multiple-values.js: Added.
        (fg.new.FinalizationGroup):
        (callback):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/length.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/name.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/poisoned-callback-throws.js: Added.
        (poisoned):
        (fg.new.FinalizationGroup):
        (emptyCells):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/poisoned-cleanup-callback-throws.js: Added.
        (poisoned):
        (emptyCells):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/prop-desc.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/return-undefined-with-gc.js: Added.
        (fn):
        (cb):
        (emptyCells):
        (prototype.assert.sameValue.fg.cleanupSome):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/return-undefined.js: Added.
        (fn):
        (cb):
        (poisoned):
        (assert.sameValue.fg.cleanupSome):
        (prototype.assert.sameValue.fg.cleanupSome):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js: Added.
        (cb):
        * test262/test/built-ins/FinalizationGroup/prototype/cleanupSome/this-not-object-throws.js: Added.
        (cb):
        * test262/test/built-ins/FinalizationGroup/prototype/constructor.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/prop-desc.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/proto.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/register/custom-this.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/prototype/register/holdings-any-value-type.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/prototype/register/holdings-same-as-target.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/register/length.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/register/name.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/register/prop-desc.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined-register-itself.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/prototype/register/return-undefined.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/prototype/register/target-not-object-throws.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/register/this-does-not-have-internal-target-throws.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/register/this-not-object-throws.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-not-object-or-undefined-throws.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings-and-target.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-holdings.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/register/unregisterToken-same-as-target.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/custom-this.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/length.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/name.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/prop-desc.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/this-does-not-have-internal-cells-throws.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/this-not-object-throws.js: Added.
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/unregister.js: Added.
        (fn):
        * test262/test/built-ins/FinalizationGroup/prototype/unregister/unregisterToken-not-object-throws.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/returns-new-object-from-constructor.js: Added.
        (cleanupCallback):
        (let.key.of.Object.getOwnPropertyNames):
        (set for):
        * test262/test/built-ins/FinalizationGroup/target-not-callable-throws.js: Added.
        * test262/test/built-ins/FinalizationGroup/undefined-newtarget-throws.js: Added.
        (FinalizationGroup):
        * test262/test/built-ins/FinalizationGroup/unnaffected-by-poisoned-cleanupCallback.js: Added.
        (cleanupCallback):
        (let.key.of.Object.getOwnPropertyNames):
        (set for):
        * test262/test/built-ins/Function/StrictFunction_restricted-properties.js:
        * test262/test/built-ins/Function/prototype/bind/BoundFunction_restricted-properties.js:
        * test262/test/built-ins/Function/prototype/restricted-property-arguments.js:
        * test262/test/built-ins/Function/prototype/restricted-property-caller.js:
        * test262/test/built-ins/Object/prototype/toString/proxy-function-async.js: Added.
        (asyncProxy.new.Proxy.async):
        * test262/test/built-ins/Object/prototype/toString/proxy-function.js:
        (asyncProxy.new.Proxy.async):
        * test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-builtin.js: Added.
        (setIter.set Symbol):
        (set defaultTag):
        (gen):
        (get return):
        (set new):
        * test262/test/built-ins/Object/prototype/toString/symbol-tag-non-str-proxy-function.js: Added.
        (generatorProxy.new.Proxy):
        (asyncProxy.new.Proxy.async):
        * test262/test/built-ins/Object/subclass-object-arg.js:
        * test262/test/built-ins/Promise/all/invoke-resolve-get-error-close.js:
        * test262/test/built-ins/Promise/all/resolve-element-function-name.js:
        * test262/test/built-ins/Promise/allSettled/invoke-resolve-get-error-close.js:
        * test262/test/built-ins/Promise/allSettled/reject-element-function-name.js:
        * test262/test/built-ins/Promise/allSettled/resolve-element-function-name.js:
        * test262/test/built-ins/Promise/executor-function-name.js:
        * test262/test/built-ins/Promise/race/invoke-resolve-get-error-close.js:
        * test262/test/built-ins/Promise/reject-function-name.js:
        * test262/test/built-ins/Promise/resolve-function-name.js:
        * test262/test/built-ins/Set/prototype/values/does-not-have-setdata-internal-slot-weakset.js:
        * test262/test/built-ins/WeakRef/constructor.js: Added.
        * test262/test/built-ins/WeakRef/instance-extensible.js: Added.
        * test262/test/built-ins/WeakRef/length.js: Added.
        * test262/test/built-ins/WeakRef/name.js: Added.
        * test262/test/built-ins/WeakRef/newtarget-prototype-is-not-object.js: Added.
        (newTarget):
        * test262/test/built-ins/WeakRef/prop-desc.js: Added.
        * test262/test/built-ins/WeakRef/proto-from-ctor-realm.js: Added.
        * test262/test/built-ins/WeakRef/proto.js: Added.
        * test262/test/built-ins/WeakRef/prototype-from-newtarget-abrupt.js: Added.
        (newTarget):
        * test262/test/built-ins/WeakRef/prototype-from-newtarget-custom.js: Added.
        (newTarget):
        * test262/test/built-ins/WeakRef/prototype-from-newtarget.js: Added.
        * test262/test/built-ins/WeakRef/prototype/Symbol.toStringTag.js: Added.
        * test262/test/built-ins/WeakRef/prototype/constructor.js: Added.
        * test262/test/built-ins/WeakRef/prototype/deref/custom-this.js: Added.
        * test262/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js: Added.
        (emptyCells):
        * test262/test/built-ins/WeakRef/prototype/deref/length.js: Added.
        * test262/test/built-ins/WeakRef/prototype/deref/name.js: Added.
        * test262/test/built-ins/WeakRef/prototype/deref/prop-desc.js: Added.
        * test262/test/built-ins/WeakRef/prototype/deref/return-target.js: Added.
        * test262/test/built-ins/WeakRef/prototype/deref/this-does-not-have-internal-target-throws.js: Added.
        (fg.new.FinalizationGroup):
        * test262/test/built-ins/WeakRef/prototype/deref/this-not-object-throws.js: Added.
        * test262/test/built-ins/WeakRef/prototype/prop-desc.js: Added.
        * test262/test/built-ins/WeakRef/prototype/proto.js: Added.
        * test262/test/built-ins/WeakRef/returns-new-object-from-constructor.js: Added.
        (let.key.of.Object.getOwnPropertyNames):
        (set for):
        * test262/test/built-ins/WeakRef/target-not-object-throws.js: Added.
        * test262/test/built-ins/WeakRef/undefined-newtarget-throws.js: Added.
        * test262/test/intl402/BigInt/prototype/toLocaleString/builtin.js:
        * test262/test/intl402/BigInt/prototype/toLocaleString/default-options-object-prototype.js:
        * test262/test/intl402/BigInt/prototype/toLocaleString/length.js:
        * test262/test/intl402/BigInt/prototype/toLocaleString/returns-same-results-as-NumberFormat.js:
        * test262/test/intl402/BigInt/prototype/toLocaleString/taint-Intl-NumberFormat.js:
        * test262/test/intl402/BigInt/prototype/toLocaleString/this-value-invalid.js:
        * test262/test/intl402/BigInt/prototype/toLocaleString/throws-same-exceptions-as-NumberFormat.js:
        * test262/test/intl402/DateTimeFormat/constructor-options-order-quarter.js: Removed.
        * test262/test/intl402/DateTimeFormat/constructor-options-quarter-invalid.js: Removed.
        * test262/test/intl402/DateTimeFormat/constructor-options-quarter-valid.js: Removed.
        * test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-date-string.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-near-time-boundaries.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/argument-to-integer.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/builtin.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/prop-desc.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-date-string.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-near-time-boundaries.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/argument-to-integer.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/builtin.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/prop-desc.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-long-en.js: Added.
        (assertParts):
        (assertPartsNumeric):
        * test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-narrow-en.js: Added.
        (assertParts):
        (assertPartsNumeric):
        * test262/test/intl402/DateTimeFormat/prototype/formatToParts/dayPeriod-short-en.js: Added.
        (assertParts):
        (assertPartsNumeric):
        * test262/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js: Added.
        (assertParts):
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/order-quarter.js: Removed.
        * test262/test/intl402/DateTimeFormat/taint-Object-prototype-quarter.js: Removed.
        * test262/test/intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js:
        * test262/test/intl402/RelativeTimeFormat/prototype/formatToParts/en-us-numeric-auto.js:
        * test262/test/language/expressions/arrow-function/ArrowFunction_restricted-properties.js:
        * test262/test/language/expressions/class/elements/private-field-access-on-inner-arrow-function.js: Added.
        (C.prototype.method):
        * test262/test/language/expressions/class/elements/private-field-access-on-inner-function.js: Added.
        (C.prototype.method.innerFunction):
        (C.prototype.method):
        * test262/test/language/expressions/class/elements/private-getter-access-on-inner-arrow-function.js: Added.
        (C):
        (C.method):
        * test262/test/language/expressions/class/elements/private-getter-access-on-inner-function.js: Added.
        (C):
        (C.method.innerFunction):
        (C.method):
        * test262/test/language/expressions/class/elements/private-getter-is-not-a-own-property.js: Added.
        (C):
        (C.checkPrivateGetter):
        * test262/test/language/expressions/class/elements/private-method-access-on-inner-arrow-function.js: Added.
        (C):
        (C.method):
        * test262/test/language/expressions/class/elements/private-method-access-on-inner-function.js: Added.
        (C):
        (C.method.innerFunction):
        (C.method):
        * test262/test/language/expressions/class/elements/private-method-is-not-a-own-property.js: Added.
        (C):
        (C.checkPrivateMethod):
        * test262/test/language/expressions/class/elements/private-setter-access-on-inner-arrow-function.js: Added.
        (C):
        (C.method):
        * test262/test/language/expressions/class/elements/private-setter-access-on-inner-function.js: Added.
        (C):
        (C.method.innerFunction):
        (C.method):
        * test262/test/language/expressions/class/elements/private-setter-is-not-a-own-property.js: Added.
        (C):
        (C.checkPrivateSetter):
        * test262/test/language/expressions/class/elements/prod-private-getter-before-super-return-in-field-initializer.js:
        * test262/test/language/expressions/class/elements/prod-private-method-before-super-return-in-field-initializer.js:
        * test262/test/language/expressions/class/elements/prod-private-setter-before-super-return-in-field-initializer.js:
        * test262/test/language/expressions/class/poisoned-underscore-proto.js: Added.
        * test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (const.C):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.return.prototype.m):
        (let.classStringExpression.return.prototype.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.return.prototype.m):
        (let.classStringExpression.return.prototype.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.prototype.m):
        (let.classStringExpression.prototype.access):
        (let.classStringExpression):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.prototype.m):
        (let.classStringExpression.prototype.access):
        (let.classStringExpression):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (const.C):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.return.C.prototype.m):
        (let.classStringExpression.return.C.prototype.access):
        (let.classStringExpression.return.C):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.return.C.prototype.m):
        (let.classStringExpression.return.C.prototype.access):
        (let.classStringExpression.return.C):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-method-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-eval-indirect.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-eval.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-factory.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (const.C):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.return.prototype.m):
        (let.classStringExpression.return.prototype.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-realm-function-ctor.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression.return.prototype.m):
        (let.classStringExpression.return.prototype.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/class/private-setter-brand-check-multiple-evaluations-of-class-realm.js: Copied from JSTests/test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js.
        (let.classStringExpression):
        (let.classStringExpression.access):
        (let.createAndInstantiateClass):
        * test262/test/language/expressions/new.target/unary-expr.js: Added.
        (new):
        (async):
        * test262/test/language/expressions/super/call-poisoned-underscore-proto.js: Added.
        (A):
        * test262/test/language/expressions/super/prop-poisoned-underscore-proto.js: Added.
        * test262/test/language/identifiers/vals-cjk-escaped.js: Added.
        * test262/test/language/identifiers/vals-cjk.js: Added.
        * test262/test/language/statements/class/elements/private-class-field-on-frozen-objects.js:
        * test262/test/language/statements/class/elements/private-field-access-on-inner-arrow-function.js: Added.
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-field-access-on-inner-function.js: Added.
        (C.prototype.method.innerFunction):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-field-is-not-clobbered-by-computed-property.js: Added.
        (C.prototype.checkPrivateField):
        (C):
        * test262/test/language/statements/class/elements/private-field-visible-to-direct-eval-on-initializer.js: Added.
        (C):
        * test262/test/language/statements/class/elements/private-field-visible-to-direct-eval.js: Added.
        (C.prototype.getWithEval):
        (C):
        (D):
        * test262/test/language/statements/class/elements/private-getter-access-on-inner-arrow-function.js: Added.
        (C.prototype.get m):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-getter-access-on-inner-function.js: Added.
        (C.prototype.get m):
        (C.prototype.method.innerFunction):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-getter-brand-check-multiple-evaluations-of-class.js:
        (let.createAndInstantiateClass):
        * test262/test/language/statements/class/elements/private-getter-is-not-a-own-property.js: Added.
        (C.prototype.get m):
        (C.prototype.checkPrivateGetter):
        (C):
        * test262/test/language/statements/class/elements/private-getter-is-not-clobbered-by-computed-property.js: Added.
        (C.prototype.get m):
        (C.prototype.checkPrivateGetter):
        (C):
        * test262/test/language/statements/class/elements/private-getter-visible-to-direct-eval-on-initializer.js: Added.
        (C.prototype.get m):
        (C):
        * test262/test/language/statements/class/elements/private-getter-visible-to-direct-eval.js: Added.
        (C.prototype.get m):
        (C.prototype.getWithEval):
        (C):
        (D.prototype.get m):
        (D):
        * test262/test/language/statements/class/elements/private-method-access-on-inner-arrow-function.js: Added.
        (C.prototype.m):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-method-access-on-inner-function.js: Added.
        (C.prototype.m):
        (C.prototype.method.innerFunction):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-method-is-not-a-own-property.js: Added.
        (C.prototype.m):
        (C.prototype.checkPrivateMethod):
        (C):
        * test262/test/language/statements/class/elements/private-method-is-not-clobbered-by-computed-property.js: Added.
        (C.prototype.m):
        (C.prototype.checkPrivateMethod):
        (C):
        * test262/test/language/statements/class/elements/private-method-visible-to-direct-eval-on-initializer.js: Added.
        (C.prototype.m):
        (C):
        * test262/test/language/statements/class/elements/private-method-visible-to-direct-eval.js: Added.
        (C.prototype.m):
        (C.prototype.getWithEval):
        (C):
        (D.prototype.m):
        (D):
        * test262/test/language/statements/class/elements/private-setter-access-on-inner-arrow-function.js: Added.
        (C.prototype.set m):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-setter-access-on-inner-function.js: Added.
        (C.prototype.set m):
        (C.prototype.method.innerFunction):
        (C.prototype.method):
        (C):
        * test262/test/language/statements/class/elements/private-setter-is-not-a-own-property.js: Added.
        (C.prototype.set m):
        (C.prototype.checkPrivateSetter):
        (C):
        * test262/test/language/statements/class/elements/private-setter-is-not-clobbered-by-computed-property.js: Added.
        (C.prototype.set m):
        (C.prototype.checkPrivateSetter):
        (C):
        * test262/test/language/statements/class/elements/private-setter-visible-to-direct-eval-on-initializer.js: Added.
        (C.prototype.set m):
        (C):
        * test262/test/language/statements/class/elements/private-setter-visible-to-direct-eval.js: Added.
        (C.prototype.set m):
        (C.prototype.setWithEval):
        (C):
        (D.prototype.set m):
        (D):
        * test262/test/language/statements/class/elements/prod-private-getter-before-super-return-in-field-initializer.js:
        * test262/test/language/statements/class/elements/prod-private-method-before-super-return-in-field-initializer.js:
        * test262/test/language/statements/class/elements/prod-private-setter-before-super-return-in-field-initializer.js:
        * test262/test/language/statements/class/elements/super-access-inside-a-private-getter.js: Added.
        (A.prototype.method):
        (A):
        (C.prototype.get m):
        (C.prototype.access):
        (C):
        * test262/test/language/statements/class/elements/super-access-inside-a-private-method.js: Added.
        (A.prototype.method):
        (A):
        (C.prototype.m):
        (C.prototype.access):
        (C):
        * test262/test/language/statements/class/elements/super-access-inside-a-private-setter.js: Added.
        (A.prototype.method):
        (A):
        (C.prototype.set m):
        (C.prototype.access):
        (C):
        * test262/test/language/statements/class/poisoned-underscore-proto.js: Added.
        (A):
        * test262/test/language/statements/function/13.2-30-s.js:
        * test262/test262-Revision.txt:

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

        [JSC] Improve wasm wpt test results by fixing miscellaneous issues
        https://bugs.webkit.org/show_bug.cgi?id=199783

        Reviewed by Mark Lam.

        Fix our spec tests.

        * wasm/js-api/Module-compile.js:
        * wasm/js-api/test_basic_api.js:
        (const.c.in.constructorProperties.switch):
        * wasm/js-api/validate.js:
        * wasm/js-api/web-assembly-instantiate.js:
        * wasm/spec-tests/jsapi.js:
        (testJSAPI.get test):
        (testJSAPI.set test):

2019-07-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r247440.

        Broke builds

        Reverted changeset:

        "[JSC] Improve wasm wpt test results by fixing miscellaneous
        issues"
        https://bugs.webkit.org/show_bug.cgi?id=199783
        https://trac.webkit.org/changeset/247440

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

        [JSC] Improve wasm wpt test results by fixing miscellaneous issues
        https://bugs.webkit.org/show_bug.cgi?id=199783

        Reviewed by Mark Lam.

        Fix our spec tests.

        * wasm/js-api/Module-compile.js:
        * wasm/js-api/test_basic_api.js:
        (const.c.in.constructorProperties.switch):
        * wasm/js-api/validate.js:
        * wasm/js-api/web-assembly-instantiate.js:
        * wasm/spec-tests/jsapi.js:
        (testJSAPI.get test):
        (testJSAPI.set test):

2019-07-12  Justin Michaud  <justin_michaud@apple.com>

        B3 should reduce (integer) Sub(Neg(x), y) to Neg(Add(x, y))
        https://bugs.webkit.org/show_bug.cgi?id=196371

        Reviewed by Keith Miller.

        * microbenchmarks/mul-immediate-sub.js: Added.
        (doTest):

2019-07-12  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueBitLShift into DFG
        https://bugs.webkit.org/show_bug.cgi?id=192664

        Reviewed by Saam Barati.

        We are adding tests to cover ValueBitwise operations AI changes.

        * stress/big-int-left-shift-untyped.js: Added.
        * stress/bit-op-with-object-returning-int32.js:
        * stress/value-bit-and-ai-rule.js: Added.
        * stress/value-bit-lshift-ai-rule.js: Added.
        * stress/value-bit-or-ai-rule.js: Added.
        * stress/value-bit-xor-ai-rule.js: Added.

2019-07-11  Justin Michaud  <justin_michaud@apple.com>

        Add b3 macro lowering for CheckMul on arm64
        https://bugs.webkit.org/show_bug.cgi?id=199251

        Reviewed by Robin Morisset.

        * microbenchmarks/check-mul-constant.js: Added.
        (doTest):
        * microbenchmarks/check-mul-no-constant.js: Added.
        (doTest):
        * microbenchmarks/check-mul-power-of-two.js: Added.
        (doTest):

2019-07-10  Tadeu Zagallo  <tzagallo@apple.com>

        Optimize join of large empty arrays
        https://bugs.webkit.org/show_bug.cgi?id=199636

        Reviewed by Mark Lam.

        * microbenchmarks/large-empty-array-join.js: Added.
        * microbenchmarks/large-empty-array-join-resolve-rope.js: Added.

2019-07-06  Michael Saboff  <msaboff@apple.com>

        switch(String) needs to check for exceptions when resolving the string
        https://bugs.webkit.org/show_bug.cgi?id=199541

        Reviewed by Mark Lam.

        New tests.

        * stress/switch-string-oom.js: Added.
        (test):
        (testLowerTiers):
        (testFTL):

2019-07-05  Mark Lam  <mark.lam@apple.com>

        ArgumentsEliminationPhase::eliminateCandidatesThatInterfere() should not decrement nodeIndex pass zero.
        https://bugs.webkit.org/show_bug.cgi?id=199533
        <rdar://problem/52669111>

        Reviewed by Filip Pizlo.

        * stress/ArgumentsEliminationPhase-eliminateCandidatesThatEscape-should-not-decrement-nodeIndex-pass-zero.js: Added.

2019-07-05  Alexey Shvayka  <shvaikalesh@gmail.com>

        [JSC] Clean up ArraySpeciesCreate
        https://bugs.webkit.org/show_bug.cgi?id=182434

        Reviewed by Yusuke Suzuki.

        Adjusts error message expectations in stress tests.

        * stress/array-flatmap.js:
        * stress/array-flatten.js:
        * stress/array-species-create-should-handle-masquerader.js:
        * test262/expectations.yaml: Mark 4 test cases as passing.

2019-07-02  Michael Saboff  <msaboff@apple.com>

        Exception from For..of loop assignment eliminates TDZ checks in subsequent code
        https://bugs.webkit.org/show_bug.cgi?id=199395

        Reviewed by Filip Pizlo.

        New regession test.

        * stress/for-of-tdz-with-try-catch.js: Added.
        (test):
        (i.catch):

2019-07-02  Keith Miller  <keith_miller@apple.com>

        Frozen Arrays length assignment should throw in strict mode
        https://bugs.webkit.org/show_bug.cgi?id=199365

        Reviewed by Yusuke Suzuki.

        * stress/frozen-array-length-should-throw-strict.js: Added.
        (test):

2019-07-01  Justin Michaud  <justin_michaud@apple.com>

        [Wasm-References] Disable references by default
        https://bugs.webkit.org/show_bug.cgi?id=199390

        Reviewed by Saam Barati.

        * wasm/references-spec-tests/ref_is_null.js:
        * wasm/references-spec-tests/ref_null.js:
        * wasm/references/anyref_globals.js:
        * wasm/references/anyref_modules.js:
        * wasm/references/anyref_table.js:
        * wasm/references/anyref_table_import.js:
        * wasm/references/element_parsing.js:
        * wasm/references/func_ref.js:
        * wasm/references/is_null.js:
        * wasm/references/multitable.js:
        * wasm/references/table_misc.js:
        * wasm/references/validation.js:

2019-07-01  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r246946.

        Caused JSC test crashes on arm64

        Reverted changeset:

        "Add b3 macro lowering for CheckMul on arm64"
        https://bugs.webkit.org/show_bug.cgi?id=199251
        https://trac.webkit.org/changeset/246946

2019-06-28  Justin Michaud  <justin_michaud@apple.com>

        Add b3 macro lowering for CheckMul on arm64
        https://bugs.webkit.org/show_bug.cgi?id=199251

        Reviewed by Robin Morisset.

        * microbenchmarks/check-mul-constant.js: Added.
        (doTest):
        * microbenchmarks/check-mul-no-constant.js: Added.
        (doTest):
        * microbenchmarks/check-mul-power-of-two.js: Added.
        (doTest):

2019-06-26  Keith Miller  <keith_miller@apple.com>

        speciesConstruct needs to throw if the result is a DataView
        https://bugs.webkit.org/show_bug.cgi?id=199231

        Reviewed by Mark Lam.

        * stress/typedarray-filter.js:
        (subclasses.forEach):
        * stress/typedarray-map.js:
        (subclasses.forEach):
        * stress/typedarray-slice.js:
        (typedArrays.forEach):
        * stress/typedarray-subarray.js:
        (subclasses.forEach):

2019-06-24  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r246714.
        https://bugs.webkit.org/show_bug.cgi?id=199179

        revert to do patch in a different way. (Requested by keith_mi_
        on #webkit).

        Reverted changeset:

        "All prototypes should call didBecomePrototype()"
        https://bugs.webkit.org/show_bug.cgi?id=196315
        https://trac.webkit.org/changeset/246714

2019-06-24  Alexey Shvayka  <shvaikalesh@gmail.com>

        Add Array.prototype.{flat,flatMap} to unscopables
        https://bugs.webkit.org/show_bug.cgi?id=194322

        Reviewed by Keith Miller.

        * stress/unscopables.js: Fix test.
        * test262/expectations.yaml: Mark 2 test cases as passing.

2019-06-21  Mark Lam  <mark.lam@apple.com>

        ArraySlice needs to keep the source array alive.
        https://bugs.webkit.org/show_bug.cgi?id=197374
        <rdar://problem/50304429>

        Reviewed by Michael Saboff and Filip Pizlo.

        * stress/array-slice-must-keep-source-array-alive.js: Added.

2019-06-22  Robin Morisset  <rmorisset@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>

        All prototypes should call didBecomePrototype()
        https://bugs.webkit.org/show_bug.cgi?id=196315

        Reviewed by Saam Barati.

        * stress/function-prototype-indexed-accessor.js: Added.

2019-06-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Strict, Sloppy and Arrow functions should have different classInfo
        https://bugs.webkit.org/show_bug.cgi?id=197631

        Reviewed by Saam Barati.

        * stress/has-own-property-arguments.js: Added.
        (shouldBe):
        (A):

2019-06-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] ClassExpr should not store result in the middle of evaluation
        https://bugs.webkit.org/show_bug.cgi?id=199106

        Reviewed by Tadeu Zagallo.

        * stress/class-expression-should-store-result-at-last.js: Added.
        (shouldThrow):
        (shouldThrow.let.a):

2019-06-20  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Add extra tests for Wasm references + fix element parsing and subtyping bugs
        https://bugs.webkit.org/show_bug.cgi?id=199044

        Reviewed by Saam Barati.

        Add wasm references spec tests as well as a worker test.

        * wasm.yaml:
        * wasm/Builder_WebAssemblyBinary.js:
        (const.emitters.Element):
        * wasm/js-api/element.js:
        (assert.throws.new.WebAssembly.Module.builder.WebAssembly):
        * wasm/references-spec-tests/ref_is_null.js: Added.
        (hostref):
        (is_hostref):
        (is_funcref):
        (eq_ref):
        (let.handler.get target):
        (register):
        (module):
        (instance):
        (call):
        (get instance):
        (exports):
        (run):
        (assert_malformed):
        (assert_invalid):
        (assert_unlinkable):
        (assert_uninstantiable):
        (assert_trap):
        (try.f):
        (catch):
        (assert_exhaustion):
        (assert_return):
        (assert_return_canonical_nan):
        (assert_return_arithmetic_nan):
        (assert_return_ref):
        (assert_return_func):
        * wasm/references-spec-tests/ref_null.js: Added.
        (hostref):
        (is_hostref):
        (is_funcref):
        (eq_ref):
        (let.handler.get target):
        (register):
        (module):
        (instance):
        (call):
        (get instance):
        (exports):
        (run):
        (assert_malformed):
        (assert_invalid):
        (assert_unlinkable):
        (assert_uninstantiable):
        (assert_trap):
        (try.f):
        (catch):
        (assert_exhaustion):
        (assert_return):
        (assert_return_canonical_nan):
        (assert_return_arithmetic_nan):
        (assert_return_ref):
        (assert_return_func):
        * wasm/references/element_parsing.js: Added.
        (module):
        * wasm/references/func_ref.js:
        * wasm/references/multitable.js:
        * wasm/references/table_misc.js:
        (TableSize.0.End.End.WebAssembly):
        * wasm/references/validation.js:
        (assert.throws):

2019-06-19  Alexey Shvayka  <shvaikalesh@gmail.com>

        Optimize `resolve` method lookup in Promise static methods
        https://bugs.webkit.org/show_bug.cgi?id=198864

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml: Mark 18 test cases as passing.

2019-06-19  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Rename anyfunc to funcref
        https://bugs.webkit.org/show_bug.cgi?id=198983

        Reviewed by Yusuke Suzuki.

        * wasm/function-tests/basic-element.js:
        * wasm/function-tests/context-switch.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
        (makeInstance):
        (assert.eq.makeInstance):
        * wasm/function-tests/exceptions.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
        * wasm/function-tests/grow-memory-2.js:
        (assert.eq.instance.exports.foo):
        * wasm/function-tests/nameSection.js:
        (const.compile):
        * wasm/function-tests/stack-overflow.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
        (assertOverflows.makeInstance):
        * wasm/function-tests/table-basic-2.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
        * wasm/function-tests/table-basic.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.makeInstance):
        * wasm/function-tests/trap-from-start-async.js:
        * wasm/function-tests/trap-from-start.js:
        * wasm/js-api/Module.exports.js:
        (assert.truthy):
        * wasm/js-api/Module.imports.js:
        (assert.truthy):
        * wasm/js-api/call-indirect.js:
        (const.oneTable):
        (const.multiTable):
        (multiTable.const.makeTable):
        (multiTable):
        (multiTable.Polyphic2Import):
        (multiTable.VirtualImport):
        * wasm/js-api/element-data.js:
        * wasm/js-api/element.js:
        (assert.throws.new.WebAssembly.Module.builder.WebAssembly):
        (assert.throws):
        (badInstantiation.makeModule):
        (badInstantiation.test):
        (badInstantiation):
        * wasm/js-api/extension-MemoryMode.js:
        * wasm/js-api/table.js:
        (new.WebAssembly.Module):
        (assert.throws):
        (assertBadTableImport):
        (assert.throws.WebAssembly.Table.prototype.grow):
        (new.WebAssembly.Table):
        (assertBadTable):
        (assert.truthy):
        * wasm/js-api/test_basic_api.js:
        (const.c.in.constructorProperties.switch):
        * wasm/js-api/unique-signature.js:
        (CallIndirectWithDuplicateSignatures):
        * wasm/js-api/wrapper-function.js:
        * wasm/modules/table.wat:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/imports.wat:
        * wasm/modules/wasm-imports-js-re-exports-wasm-exports/sum.wat:
        * wasm/modules/wasm-imports-wasm-exports/imports.wat:
        * wasm/modules/wasm-imports-wasm-exports/sum.wat:
        * wasm/references/anyref_table.js:
        * wasm/references/anyref_table_import.js:
        (doSet):
        (assert.throws):
        * wasm/references/func_ref.js:
        (makeFuncrefIdent):
        (assert.eq.instance.exports.fix):
        (GetLocal.0.I32Const.0.TableSet.0.End.End.WebAssembly.assert.throws):
        (GetLocal.0.I32Const.0.TableSet.0.End.End.WebAssembly):
        (let.importedFun.of):
        (makeAnyfuncIdent): Deleted.
        (makeAnyfuncIdent.fun): Deleted.
        * wasm/references/multitable.js:
        (assert.eq):
        (assert.throws):
        * wasm/references/table_misc.js:
        (GetLocal.0.TableFill.0.End.End.WebAssembly):
        * wasm/references/validation.js:
        (assert.throws.new.WebAssembly.Module.bin):
        (assert.throws):
        * wasm/spec-harness/index.js:
        * wasm/spec-harness/wasm-constants.js:
        * wasm/spec-harness/wasm-module-builder.js:
        (WasmModuleBuilder.prototype.toArray):
        * wasm/spec-harness/wast.js:
        (elem_type):
        (string_of_elem_type):
        (string_of_table_type):
        * wasm/spec-tests/jsapi.js:
        * wasm/stress/wasm-table-grow-initialize.js:
        * wasm/wasm.json:

2019-06-18  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Add support for Table.size, grow and fill instructions
        https://bugs.webkit.org/show_bug.cgi?id=198761

        Reviewed by Yusuke Suzuki.

        * wasm/Builder_WebAssemblyBinary.js:
        (const.putOp):
        * wasm/references/table_misc.js: Added.
        (TableSize.End.End.WebAssembly):
        (GetLocal.0.GetLocal.1.TableGrow.End.End.WebAssembly):
        * wasm/wasm.json:

2019-06-18  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Add support for multiple tables
        https://bugs.webkit.org/show_bug.cgi?id=198760

        Reviewed by Saam Barati.

        * wasm/Builder.js:
        * wasm/js-api/call-indirect.js:
        (const.oneTable):
        (const.multiTable):
        (multiTable):
        (multiTable.Polyphic2Import):
        (multiTable.VirtualImport):
        (const.wasmModuleWhichImportJS): Deleted.
        (const.makeTable): Deleted.
        (): Deleted.
        (Polyphic2Import): Deleted.
        (VirtualImport): Deleted.
        * wasm/js-api/table.js:
        (new.WebAssembly.Module):
        (assert.throws):
        (assertBadTableImport):
        (assert.truthy):
        (assert.throws.new.WebAssembly.Module.builder.WebAssembly): Deleted.
        * wasm/references/anyref_table.js:
        * wasm/references/anyref_table_import.js:
        (makeImport):
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl.makeImport):
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl):
        * wasm/references/multitable.js: Added.
        (assert.throws.1.exports.set_tbl0):
        (assert.throws):
        (assert.eq):
        * wasm/references/validation.js:
        (assert.throws.new.WebAssembly.Module.bin):
        (assert.throws):
        * wasm/spec-tests/imports.wast.js:
        * wasm/wasm.json:

        * wasm/Builder.js:
        * wasm/js-api/call-indirect.js:
        (const.oneTable):
        (const.multiTable):
        (multiTable):
        (multiTable.Polyphic2Import):
        (multiTable.VirtualImport):
        (const.wasmModuleWhichImportJS): Deleted.
        (const.makeTable): Deleted.
        (): Deleted.
        (Polyphic2Import): Deleted.
        (VirtualImport): Deleted.
        * wasm/js-api/table.js:
        (new.WebAssembly.Module):
        (assert.throws):
        (assertBadTableImport):
        (assert.truthy):
        (assert.throws.new.WebAssembly.Module.builder.WebAssembly): Deleted.
        * wasm/references/anyref_table.js:
        * wasm/references/anyref_table_import.js:
        (makeImport):
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl.makeImport):
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl):
        * wasm/references/func_ref.js:
        (GetLocal.0.I32Const.0.TableSet.End.End.WebAssembly.fun): Deleted.
        (GetLocal.0.I32Const.0.TableSet.End.End.WebAssembly.assert.throws): Deleted.
        (GetLocal.0.I32Const.0.TableSet.End.End.WebAssembly): Deleted.
        * wasm/references/multitable.js: Added.
        (assert.throws.1.exports.set_tbl0):
        (assert.throws):
        (assert.eq):
        (string_appeared_here.tableInsanity):
        (I32Const.0.GetLocal.0.TableSet.1.End.End.WebAssembly.):
        (I32Const.0.GetLocal.0.TableSet.1.End.End.WebAssembly):
        * wasm/references/validation.js:
        (assert.throws.new.WebAssembly.Module.bin):
        (assert.throws):
        * wasm/spec-tests/imports.wast.js:
        * wasm/wasm.json:

2019-06-18  Alexey Shvayka  <shvaikalesh@gmail.com>

        [ESNExt] String.prototype.matchAll
        https://bugs.webkit.org/show_bug.cgi?id=186694

        Reviewed by Yusuke Suzuki.

        Implement String.prototype.matchAll.
        (https://tc39.es/ecma262/#sec-string.prototype.matchall)

        * test262/config.yaml:

2019-06-18  Tadeu Zagallo  <tzagallo@apple.com>

        DFG code should not reify the names of builtin functions with private names
        https://bugs.webkit.org/show_bug.cgi?id=198849
        <rdar://problem/51733890>

        Reviewed by Filip Pizlo.

        * stress/builtin-private-function-name.js: Added.
        (then):
        (PromiseLike):

2019-06-18  Keith Miller  <keith_miller@apple.com>

        MaybeParseAsGeneratorForScope sometimes loses track of its scope ref
        https://bugs.webkit.org/show_bug.cgi?id=198969
        <rdar://problem/51620714>

        Reviewed by Tadeu Zagallo.

        * stress/nested-yield-in-arrow-function-should-be-a-syntax-error.js: Added.
        (catch):

2019-06-17  Justin Michaud  <justin_michaud@apple.com>

        Validate that table element type is funcref if using an element section
        https://bugs.webkit.org/show_bug.cgi?id=198910

        Reviewed by Yusuke Suzuki.

        * wasm/references/anyref_table.js:

2019-06-17  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Introduce DisposableCallSiteIndex to enforce type-safety
        https://bugs.webkit.org/show_bug.cgi?id=197378

        Reviewed by Saam Barati.

        * stress/disposable-call-site-index-with-call-and-this.js: Added.
        (foo):
        (bar):
        * stress/disposable-call-site-index.js: Added.
        (foo):
        (bar):

2019-06-17  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Add support for Funcref in parameters and return types
        https://bugs.webkit.org/show_bug.cgi?id=198157

        Reviewed by Yusuke Suzuki.

        * wasm/Builder.js:
        (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
        * wasm/references/anyref_globals.js:
        * wasm/references/func_ref.js: Added.
        (fullGC.gc.makeExportedFunction):
        (makeExportedIdent):
        (makeAnyfuncIdent):
        (fun):
        (assert.eq.instance.exports.fix.fun):
        (assert.eq.instance.exports.fix):
        (string_appeared_here.End.End.Function.End.Code.End.WebAssembly.imp.ref):
        (string_appeared_here.End.End.Function.End.Code.End.WebAssembly):
        (GetLocal.0.I32Const.0.TableSet.End.End.WebAssembly.fun):
        (GetLocal.0.I32Const.0.TableSet.End.End.WebAssembly.assert.throws):
        (GetLocal.0.I32Const.0.TableSet.End.End.WebAssembly):
        (assert.throws):
        (assert.throws.doTest):
        (let.importedFun.of):
        (makeAnyfuncIdent.fun):
        * wasm/references/validation.js:
        (assert.throws):
        * wasm/wasm.json:

2019-06-17  Ross Kirsling  <ross.kirsling@sony.com>

        Update test262 tests (2019.06.13)
        https://bugs.webkit.org/show_bug.cgi?id=198821

        Reviewed by Konstantin Tokarev.

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

2019-06-16  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Grown region of WasmTable should be initialized with null
        https://bugs.webkit.org/show_bug.cgi?id=198903

        Reviewed by Saam Barati.

        * wasm/stress/wasm-table-grow-initialize.js: Added.
        (shouldBe):

2019-06-13  Yusuke Suzuki  <ysuzuki@apple.com>

        Yarr bytecode compilation failure should be gracefully handled
        https://bugs.webkit.org/show_bug.cgi?id=198700

        Reviewed by Michael Saboff.

        * stress/regexp-bytecode-compilation-fail.js: Added.
        (shouldThrow):

2019-06-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Polymorphic call stub's slow path should restore callee saves before performing tail call
        https://bugs.webkit.org/show_bug.cgi?id=198770

        Reviewed by Saam Barati.

        * stress/poly-call-stub-slow-path-should-restore-callee-saves-when-doing-tail-call.js: Added.
        (test):

2019-06-11  Alexey Shvayka  <shvaikalesh@gmail.com>

        JSC should throw if proxy set returns falsish in strict mode context
        https://bugs.webkit.org/show_bug.cgi?id=177398

        Reviewed by Yusuke Suzuki.

        1. Add coverage for Proxy `set` trap returning falsy value in strict mode.
        2. RegExp methods throw unless [[Set]] succeeds. Return `true` from Proxy `set` traps to fix the tests.

        * stress/proxy-set.js: Add 2 test cases.
        * stress/regexp-match-proxy.js: Fix test.
        * stress/regexp-replace-proxy.js: Fix test.

2019-06-11  Alexey Shvayka  <shvaikalesh@gmail.com>

        Error message for non-callable Proxy `construct` trap is misleading
        https://bugs.webkit.org/show_bug.cgi?id=198637

        Reviewed by Saam Barati.

        * stress/proxy-construct.js:

2019-06-10  Tadeu Zagallo  <tzagallo@apple.com>

        AI BitURShift's result should not be unsigned
        https://bugs.webkit.org/show_bug.cgi?id=198689
        <rdar://problem/51550063>

        Reviewed by Saam Barati.

        * stress/urshift-int32-overflow.js: Added.
        (foo.):
        (foo):

2019-06-11  Guillaume Emont  <guijemont@igalia.com>

        Skip stress/ftl-gettypedarrayoffset-wasteful.js on Arm/Linux

        Unreviewed gardening.

        * stress/ftl-gettypedarrayoffset-wasteful.js:
        Skipped on arm/linux as it always times out on the bot since a change
        between r246270 and r246278 inclusive.

2019-06-10  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] UnlinkedCodeBlock should be eventually jettisoned in VM mini mode
        https://bugs.webkit.org/show_bug.cgi?id=198023

        Reviewed by Saam Barati.

        * stress/reparsing-unlinked-codeblock.js: Added.
        (shouldBe):
        (hello):

2019-06-09  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Use mergePrediction in ValuePow prediction propagation
        https://bugs.webkit.org/show_bug.cgi?id=198648

        Reviewed by Saam Barati.

        * stress/prediction-propagation-should-use-merge-prediction-for-value-pow.js: Added.

2019-06-07  Tadeu Zagallo  <tzagallo@apple.com>

        AI should get GetterSetter structure from the base's GlobalObject for GetGetterSetterByOffset
        https://bugs.webkit.org/show_bug.cgi?id=198581
        <rdar://problem/51099753>

        Reviewed by Saam Barati.

        * stress/global-object-proto-getter.js: Added.
        (f):
        (test):

2019-06-05  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Add support for Anyref tables, Table.get and Table.set (for Anyref only).
        https://bugs.webkit.org/show_bug.cgi?id=198398

        Reviewed by Saam Barati.

        * wasm/references/anyref_table.js: Added.
        (string_appeared_here.doGCSet):
        (doGCTest):
        (doGCSet.doGCTest.let.count.0.doBarrierSet):
        * wasm/references/anyref_table_import.js: Added.
        (makeImport):
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl.makeImport):
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl):
        * wasm/references/is_null_error.js: Removed.
        * wasm/references/validation.js: Added.
        (assert.throws.new.WebAssembly.Module.bin):
        (assert.throws):
        * wasm/wasm.json:

2019-06-05  Justin Michaud  <justin_michaud@apple.com>

        WebAssembly: pow functions returns 0 when exponent 1.0 or -1.0
        https://bugs.webkit.org/show_bug.cgi?id=198106

        Reviewed by Saam Barati.

        * wasm/regress/selectf64.js: Added.
        * wasm/regress/selectf64.wasm: Added.
        * wasm/regress/selectf64.wat: Added.

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

        Argument elimination should check transitive dependents for interference
        https://bugs.webkit.org/show_bug.cgi?id=198520
        <rdar://problem/50863343>

        Reviewed by Filip Pizlo.

        * stress/argument-elimination-inline-rest-past-kill.js: Added.
        (f2):
        (f3):

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

        Argument elimination should check for negative indices in GetByVal
        https://bugs.webkit.org/show_bug.cgi?id=198302
        <rdar://problem/51188095>

        Reviewed by Filip Pizlo.

        * stress/eliminate-arguments-negative-rest-access.js: Added.
        (inlinee):
        (opt):

2019-06-03  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement support for "**"
        https://bugs.webkit.org/show_bug.cgi?id=190799

        Reviewed by Saam Barati.

        * stress/big-int-exp-basic.js: Added.
        * stress/big-int-exp-jit-osr.js: Added.
        * stress/big-int-exp-jit-untyped.js: Added.
        * stress/big-int-exp-jit.js: Added.
        * stress/big-int-exp-negative-exponent.js: Added.
        * stress/big-int-exp-to-primitive.js: Added.
        * stress/big-int-exp-type-error.js: Added.
        * stress/big-int-exp-wrapped-value.js: Added.
        * stress/value-pow-ai-rule.js: Added.

2019-05-30  Tadeu Zagallo  <tzagallo@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement op_wide16 / op_wide32 and introduce 16bit version bytecode
        https://bugs.webkit.org/show_bug.cgi?id=197979

        Reviewed by Filip Pizlo.

        * stress/16bit-code.js: Added.
        (shouldBe):
        * stress/32bit-code.js: Added.
        (shouldBe):

2019-05-30  Justin Michaud  <justin_michaud@apple.com>

        oss-fuzz: jsc: Issue 15016: jsc: Abrt in JSC::Wasm::AirIRGenerator::addLocal (15016)
        https://bugs.webkit.org/show_bug.cgi?id=198355

        Reviewed by Saam Barati.

        * wasm/references/is_null.js:

2019-05-30  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Skip additional tests on PlayStation
        https://bugs.webkit.org/show_bug.cgi?id=198352

        Reviewed by Don Olmstead.

        Skip pow test on PlayStation due to behavior difference in standard library.
        Skip incremental marking test due to OOM on PlayStation systems.

        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:
        * stress/math-pow-with-constants.js:
        * stress/pow-with-constants.js:

2019-05-28  Dean Jackson  <dino@apple.com>

        Implement Promise.allSettled
        https://bugs.webkit.org/show_bug.cgi?id=197600
        <rdar://problem/50483885>

        Reviewed by Keith Miller.

        Start testing Promise.allSettled. We pass most of the tests.
        The ones that fail are similar to the Promise.all tests we already fail.

        * test262/config.yaml: Remove Promise.allSettled from skipped tests.
        * test262/expectations.yaml: Add new expectations for allSettled tests.

2019-05-28  Michael Saboff  <msaboff@apple.com>

        [YARR] Properly handle RegExp's that require large ParenContext space
        https://bugs.webkit.org/show_bug.cgi?id=198065

        Reviewed by Keith Miller.

        New test.

        * stress/regexp-large-paren-context.js: Added.
        (testLargeRegExp):

2019-05-28  Tadeu Zagallo  <tzagallo@apple.com>

        JITOperations putByVal should mark negative array indices as out-of-bounds
        https://bugs.webkit.org/show_bug.cgi?id=198271

        Reviewed by Saam Barati.

        * microbenchmarks/get-by-val-negative-array-index.js:
        (foo):
        Update the getByVal microbenchmark added in r245769. This now shows that r245769
        is 4.2x faster than the previous commit.

        * microbenchmarks/put-by-val-negative-array-index.js: Added.
        (foo):

2019-05-25  Tadeu Zagallo  <tzagallo@apple.com>

        JITOperations getByVal should mark negative array indices as out-of-bounds
        https://bugs.webkit.org/show_bug.cgi?id=198229

        Reviewed by Saam Barati.

        * microbenchmarks/get-by-val-negative-array-index.js: Added.
        (foo):

2019-05-24  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Support Anyref in globals
        https://bugs.webkit.org/show_bug.cgi?id=198102

        Reviewed by Saam Barati.

        Add test for anyrefs in globals, as well as adding a new RefNull initExpr for Builder.

        * wasm/Builder.js:
        (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
        * wasm/Builder_WebAssemblyBinary.js:
        (const.putInitExpr):
        * wasm/references/anyref_globals.js: Added.
        (GetGlobal.0.End.End.WebAssembly):
        (5.doGCSet):
        (doGCTest):
        (doGCSet.doGCTest.let.count.0.doBarrierSet):

2019-05-23  Tadeu Zagallo  <tzagallo@apple.com>

        DFG::OSREntry should not perform arity check
        https://bugs.webkit.org/show_bug.cgi?id=198189

        Reviewed by Saam Barati.

        * microbenchmarks/loop-osr-with-arity-mismatch.js: Added.
        (foo):

2019-05-23  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Skip additional tests on PlayStation
        https://bugs.webkit.org/show_bug.cgi?id=198145

        Reviewed by Ross Kirsling.

        * exceptionFuzz.yaml:
        Add skip on hostOS playstation
        * executableAllocationFuzz.yaml:
        Add skip on hostOS playstation

2019-05-23  Tadeu Zagallo  <tzagallo@apple.com>

        createListFromArrayLike should throw if value is not an object
        https://bugs.webkit.org/show_bug.cgi?id=198138

        Reviewed by Yusuke Suzuki.

        * stress/create-list-from-array-like-not-object.js: Added.
        (testValid):
        (testInvalid):
        * stress/proxy-get-own-property-names-should-not-clear-previous-results.js:
        (opt):
        * stress/proxy-proto-enumerator.js: Added.
        (main):
        * stress/proxy-proto-own-keys.js: Added.
        (assert):
        (ownKeys):

2019-05-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] ArrayAllocationProfile should not access to butterfly in concurrent compiler
        https://bugs.webkit.org/show_bug.cgi?id=197809

        Reviewed by Michael Saboff.

        * stress/array-allocation-profile-should-not-update-itself-in-concurrent-compiler.js: Added.
        (foo):

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

        [ESNext] Implement support for Numeric Separators
        https://bugs.webkit.org/show_bug.cgi?id=196351

        Reviewed by Keith Miller.

        * stress/numeric-literal-separators.js: Added.
        Add tests for feature.

        * test262/expectations.yaml:
        Mark 60 test cases as passing.

2019-05-22  Tadeu Zagallo  <tzagallo@apple.com>

        llint_slow_path_get_by_id needs to hold the CodeBlock's to update the metadata's mode
        https://bugs.webkit.org/show_bug.cgi?id=198120
        <rdar://problem/49668795>

        Reviewed by Michael Saboff.

        * stress/get-array-length-concurrently-change-mode.js: Added.
        (main):

2019-05-22  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r245634.
        https://bugs.webkit.org/show_bug.cgi?id=198140

        'This patch makes JSC crash on launch in debug builds'
        (Requested by tadeuzagallo on #webkit).

        Reverted changeset:

        "[ESNext] Implement support for Numeric Separators"
        https://bugs.webkit.org/show_bug.cgi?id=196351
        https://trac.webkit.org/changeset/245634

2019-05-22  Tadeu Zagallo  <tzagallo@apple.com>

        Stack-buffer-overflow in decodeURIComponent
        https://bugs.webkit.org/show_bug.cgi?id=198109
        <rdar://problem/50397550>

        Reviewed by Michael Saboff.

        * stress/decode-uri-icu-count-trail-bytes.js: Added.
        (i.j.try.i.toString):
        (i.j.catch):

2019-05-22  Yusuke Suzuki  <ysuzuki@apple.com>

        Don't clear PropertyNameArray in Proxy code
        https://bugs.webkit.org/show_bug.cgi?id=197691

        Reviewed by Saam Barati.

        * stress/proxy-get-own-property-names-should-not-clear-previous-results.js: Added.
        (shouldBe):
        (opt):

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

        [ESNext] Implement support for Numeric Separators
        https://bugs.webkit.org/show_bug.cgi?id=196351

        Reviewed by Keith Miller.

        * stress/numeric-literal-separators.js: Added.
        Add tests for feature.

        * test262/expectations.yaml:
        Mark 60 test cases as passing.

2019-05-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] ArrayBufferContents::tryAllocate signs the pointer with allocation size and authenticates it with sizeInBytes
        https://bugs.webkit.org/show_bug.cgi?id=198101

        Reviewed by Michael Saboff.

        * stress/zero-sized-array-buffer-pointer-should-be-signed-with-zero.js: Added.
        (shouldBe):

2019-05-20  Keith Miller  <keith_miller@apple.com>

        Cleanup Yarr regexp code around paren contexts.
        https://bugs.webkit.org/show_bug.cgi?id=198063

        Reviewed by Yusuke Suzuki.

        * stress/regexp-many-named-sequential-capture-groups.js: Added.
        (i.s):
        * stress/regexp-many-unnamed-sequential-capture-groups.js: Added.

2019-05-17  Justin Michaud  <justin_michaud@apple.com>

        [WASM-References] Add support for Anyref in parameters and return types, Ref.null and Ref.is_null for Anyref values.
        https://bugs.webkit.org/show_bug.cgi?id=197969

        Reviewed by Keith Miller.

        Support the anyref type in Builder.js, plus add some extra error logging.
        Add new folder for wasm references tests.

        * wasm.yaml:
        * wasm/Builder.js:
        (const._isValidValue):
        * wasm/references/anyref_modules.js: Added.
        (Call.3.RefIsNull.End.End.WebAssembly.js.ident):
        (Call.3.RefIsNull.End.End.WebAssembly.js.make_null):
        (Call.3.RefIsNull.End.End.WebAssembly):
        (undefined):
        * wasm/references/is_null.js: Added.
        * wasm/references/is_null_error.js: Added.
        * wasm/spec-harness/index.js:
        * wasm/wasm.json:

2019-05-16  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Invalid AssignmentTargetType should be an early error.
        https://bugs.webkit.org/show_bug.cgi?id=197603

        Reviewed by Keith Miller.

        * test262/expectations.yaml:
        Update expectations to reflect new SyntaxErrors.
        (Ideally, these should all be viewed as passing in the near future.)

        * stress/async-await-basic.js:
        * stress/big-int-literals.js:
        Update tests to reflect new SyntaxErrors.

        * ChakraCore.yaml:
        * ChakraCore/test/EH/try6.baseline-jsc:
        * ChakraCore/test/Error/variousErrors3.baseline-jsc: Added.
        Update baselines to reflect new SyntaxErrors.

2019-05-15  Saam Barati  <sbarati@apple.com>

        Bound liveness of SetArgumentMaybe nodes when maximal flush insertion phase is enabled
        https://bugs.webkit.org/show_bug.cgi?id=197855
        <rdar://problem/50236506>

        Reviewed by Michael Saboff.

        * stress/set-argument-maybe-maximal-flush-should-not-extend-liveness-2.js: Added.
        (f0):
        (bar):
        (foo):
        * stress/set-argument-maybe-maximal-flush-should-not-extend-liveness.js: Added.
        (f1):
        (f2):
        (foo):

2019-05-14  Keith Miller  <keith_miller@apple.com>

        Fix issue with byteOffset on ARM64E
        https://bugs.webkit.org/show_bug.cgi?id=197884

        Reviewed by Saam Barati.

        We didn't have any tests that run with non-byte/non-zero offset
        typed arrays.

        * stress/ftl-gettypedarrayoffset-wasteful.js:

2019-05-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Shrink sizeof(UnlinkedFunctionExecutable) more
        https://bugs.webkit.org/show_bug.cgi?id=197833

        Reviewed by Darin Adler.

        * stress/generator-name.js: Added.
        (shouldBe):
        (gen):
        (catch):

2019-05-13  Tadeu Zagallo  <tzagallo@apple.com>

        JSObject::getOwnPropertyDescriptor is missing an exception check
        https://bugs.webkit.org/show_bug.cgi?id=197693
        <rdar://problem/50441784>

        Reviewed by Saam Barati.

        * stress/proxy-spread.js: Added.
        (foo):

2019-05-10  Saam barati  <sbarati@apple.com>

        Call to JSToWasmICCallee::createStructure passes in wrong prototype value
        https://bugs.webkit.org/show_bug.cgi?id=197807
        <rdar://problem/50530400>

        Reviewed by Yusuke Suzuki.

        * stress/js-to-wasm-callee-has-correct-prototype.js: Added.
        (test.getInstance):
        (test):

2019-05-10  Ross Kirsling  <ross.kirsling@sony.com>

        [Test262] Unreviewed expectations update following r245188.

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

        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-is-infinity-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-is-nan-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-undefined-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-x-greater-than-y-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/this-is-not-object-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-is-infinity-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-is-nan-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-undefined-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-x-greater-than-y-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/this-is-not-object-throws.js:
        These files have invalid YAML comments. Will also submit corrections back to Test262.

2019-05-10  Keith Miller  <keith_miller@apple.com>

        Update test262 tests.

        Rubber-stamped by Yusuke Suzuki.

        * test262/*: mega-patch too many things to list individually.

2019-05-09  Keith Miller  <keith_miller@apple.com>

        Unreview, fix test to have a try-catch.

        * stress/many-nested-functions-parser-stack-overflow.js:
        (catch):

2019-05-09  Keith Miller  <keith_miller@apple.com>

        parseStatementListItem needs a stack overflow check
        https://bugs.webkit.org/show_bug.cgi?id=197749

        Reviewed by Saam Barati.

        * stress/many-nested-functions-parser-stack-overflow.js: Added.

2019-05-08  Saam barati  <sbarati@apple.com>

        AccessGenerationState::emitExplicitExceptionHandler can clobber an in use register
        https://bugs.webkit.org/show_bug.cgi?id=197715
        <rdar://problem/50399252>

        Reviewed by Filip Pizlo.

        * stress/polymorphic-access-exception-handler-should-not-clobber-used-register.js: Added.
        (foo):
        (bar):

2019-05-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r245068.

        Caused debug layout tests to exit early due to an assertion
        failure.

        Reverted changeset:

        "All prototypes should call didBecomePrototype()"
        https://bugs.webkit.org/show_bug.cgi?id=196315
        https://trac.webkit.org/changeset/245068

2019-05-08  Yusuke Suzuki  <ysuzuki@apple.com>

        Invalid DFG JIT genereation in high CPU usage state
        https://bugs.webkit.org/show_bug.cgi?id=197453

        Reviewed by Saam Barati.

        * stress/string-ident-use-clears-abstract-value-if-rope-string-constant-is-held.js: Added.
        (trigger):
        (main):

2019-05-08  Robin Morisset  <rmorisset@apple.com>

        All prototypes should call didBecomePrototype()
        https://bugs.webkit.org/show_bug.cgi?id=196315

        Reviewed by Saam Barati.

        This changelog already landed, but the commit was missing the actual changes.

        * stress/function-prototype-indexed-accessor.js: Added.

2019-05-08  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueMod into DFG
        https://bugs.webkit.org/show_bug.cgi?id=186174

        Reviewed by Saam Barati.

        * microbenchmarks/mod-untyped.js: Added.
        * stress/big-int-mod-osr.js: Added.
        * stress/value-div-ai-rule.js: Added.
        * stress/value-mod-ai-rule.js: Added.

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

        [JSC] DFG_ASSERT failed in lowInt52
        https://bugs.webkit.org/show_bug.cgi?id=197569

        Reviewed by Saam Barati.

        * stress/getstack-int52.js: Added.
        (opt):
        (main):

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

        JSC: A bug in BytecodeGenerator::emitEqualityOpImpl
        https://bugs.webkit.org/show_bug.cgi?id=197479

        Reviewed by Saam Barati.

        * stress/do-not-perform-bytecode-peephole-optimization-in-jump-target.js: Added.
        (shouldBe):

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

        TemplateObject passed to template literal tags are not always identical for the same source location.
        https://bugs.webkit.org/show_bug.cgi?id=190756

        Reviewed by Saam Barati.

        * complex.yaml:
        * complex/tagged-template-regeneration-after.js: Added.
        (shouldBe):
        * complex/tagged-template-regeneration.js: Added.
        (call):
        (test):
        * modules/tagged-template-inside-module.js: Added.
        (from.string_appeared_here.call):
        * modules/tagged-template-inside-module/other-tagged-templates.js: Added.
        (call):
        (export.otherTaggedTemplates):
        * stress/call-and-construct-should-return-same-tagged-templates.js: Added.
        (shouldBe):
        (call):
        (poly):
        * stress/tagged-templates-in-direct-eval-should-not-produce-same-site-object.js: Added.
        (shouldBe):
        (call):
        * stress/tagged-templates-in-function-in-direct-eval.js: Added.
        (shouldBe):
        (call):
        (test):
        * stress/tagged-templates-in-global-function-should-not-produce-same-site-object.js: Added.
        (shouldBe):
        (call):
        * stress/tagged-templates-in-indirect-eval-should-not-produce-same-site-object.js: Added.
        (shouldBe):
        (call):
        * stress/tagged-templates-in-multiple-functions.js: Added.
        (shouldBe):
        (call):
        (a):
        (b):
        (c):
        * stress/tagged-templates-with-same-start-offset.js: Added.
        (shouldBe):

2019-05-07  Robin Morisset  <rmorisset@apple.com>

        All prototypes should call didBecomePrototype()
        https://bugs.webkit.org/show_bug.cgi?id=196315

        Reviewed by Saam Barati.

        * stress/function-prototype-indexed-accessor.js: Added.

2019-05-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244978.
        https://bugs.webkit.org/show_bug.cgi?id=197671

        TemplateObject map should use start/end offsets (Requested by
        yusukesuzuki on #webkit).

        Reverted changeset:

        "TemplateObject passed to template literal tags are not always
        identical for the same source location."
        https://bugs.webkit.org/show_bug.cgi?id=190756
        https://trac.webkit.org/changeset/244978

2019-05-07  Tadeu Zagallo  <tzagallo@apple.com>

        tryCachePutByID should not crash if target offset changes
        https://bugs.webkit.org/show_bug.cgi?id=197311
        <rdar://problem/48033612>

        Reviewed by Filip Pizlo.

        Add a series of tests related tryCachePutByID. Two of these tests used to crash and were fixed
        by this patch: `cache-put-by-id-different-attributes.js` and `cache-put-by-id-different-offset.js`

        * stress/cache-put-by-id-delete-prototype.js: Added.
        (A.prototype.set y):
        (A):
        (B.prototype.set y):
        (B):
        (C):
        * stress/cache-put-by-id-different-__proto__.js: Added.
        (A.prototype.set y):
        (A):
        (B1):
        (B2.prototype.set y):
        (B2):
        (C):
        (D):
        * stress/cache-put-by-id-different-attributes.js: Added.
        (Foo):
        (set x):
        * stress/cache-put-by-id-different-offset.js: Added.
        (Foo):
        (set x):
        * stress/cache-put-by-id-insert-prototype.js: Added.
        (A.prototype.set y):
        (A):
        (C):
        * stress/cache-put-by-id-poly-proto.js: Added.
        (Foo):
        (set _):
        (createBar.Bar):
        (createBar):

2019-05-07  Saam Barati  <sbarati@apple.com>

        Don't OSR enter into an FTL CodeBlock that has been jettisoned
        https://bugs.webkit.org/show_bug.cgi?id=197531
        <rdar://problem/50162379>

        Reviewed by Yusuke Suzuki.

        * stress/dont-osr-enter-into-jettisoned-ftl-code-block.js: Added.

2019-05-06  Dean Jackson  <dino@apple.com>

        Update test262 expectations for Proxy passes
        https://bugs.webkit.org/show_bug.cgi?id=197628

        Reviewed by Yusuke Suzuki.

        There are two consistent passes in Proxy.ownKeys.

        * test262/expectations.yaml:

2019-05-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] We should check OOM for description string of Symbol
        https://bugs.webkit.org/show_bug.cgi?id=197634

        Reviewed by Keith Miller.

        * stress/check-symbol-description-oom.js: Added.
        (shouldThrow):

2019-05-06  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, land one more test
        https://bugs.webkit.org/show_bug.cgi?id=197587

        * stress/setter-frame-flush.js: Added.
        (setter):
        (foo):
        (bar):

2019-05-06  Yusuke Suzuki  <ysuzuki@apple.com>

        TemplateObject passed to template literal tags are not always identical for the same source location.
        https://bugs.webkit.org/show_bug.cgi?id=190756

        Reviewed by Saam Barati.

        * complex.yaml:
        * complex/tagged-template-regeneration-after.js: Added.
        (shouldBe):
        * complex/tagged-template-regeneration.js: Added.
        (call):
        (test):
        * modules/tagged-template-inside-module.js: Added.
        (from.string_appeared_here.call):
        * modules/tagged-template-inside-module/other-tagged-templates.js: Added.
        (call):
        (export.otherTaggedTemplates):
        * stress/call-and-construct-should-return-same-tagged-templates.js: Added.
        (shouldBe):
        (call):
        (poly):
        * stress/tagged-templates-in-direct-eval-should-not-produce-same-site-object.js: Added.
        (shouldBe):
        (call):
        * stress/tagged-templates-in-global-function-should-not-produce-same-site-object.js: Added.
        (shouldBe):
        (call):
        * stress/tagged-templates-in-indirect-eval-should-not-produce-same-site-object.js: Added.
        (shouldBe):
        (call):
        * stress/tagged-templates-in-multiple-functions.js: Added.
        (shouldBe):
        (call):
        (a):
        (b):
        (c):

2019-05-06  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] JSC Stress tests failing due to timezone printing
        https://bugs.webkit.org/show_bug.cgi?id=197615

        PlayStation's strftime does not give timezone strings, which
        results in time strings like "Wed Oct 23 1974 11:45:01 GMT-0700"
        rather than "Wed Oct 23 1974 11:45:01 GMT-0700 (Pacific Daylight Time)"
        which causes diff failures with the expectations. Add expectations
        without the timezone string and use those on playstation.

        Reviewed by Ross Kirsling.

        * ChakraCore.yaml: Update these tests to use alternate expectation file on PlayStation
        * ChakraCore/test/GlobalFunctions/InternalToString.baseline-jsc-playstation: Added.
        * ChakraCore/test/Operators/equals.baseline-jsc-playstation: Added.
        * ChakraCore/test/fieldopts/objtypespec-newobj.2.baseline-jsc-playstation: Added.

2019-05-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add more tests for DFG SetLocal emission for adhoc SetterCall frame
        https://bugs.webkit.org/show_bug.cgi?id=197587

        Reviewed by Sam Weinig.

        This patch adds more tests to r244939. It also inlines setter calls, and eventually see that no PutStack is emitted because MovHint's KillStack kills it.

        * stress/adhoc-setter-frame-should-not-be-killed.js: Added.

2019-05-04  Tadeu Zagallo  <tzagallo@apple.com>

        TypedArrays should not store properties that are canonical numeric indices
        https://bugs.webkit.org/show_bug.cgi?id=197228
        <rdar://problem/49557381>

        Reviewed by Saam Barati.

        * stress/array-species-config-array-constructor.js:
        (test):
        * stress/put-direct-index-broken-2.js:
        * stress/typed-array-canonical-numeric-index-string.js: Added.
        (makeTest.assert):
        (makeTest):
        (const.testInvalidIndices.makeTest.set assert):
        (const.testInvalidIndices.makeTest):
        (const.makeTestValidIndex.configurable.set assert):
        (const.makeTestValidIndex.configurable):
        * stress/typedarray-access-monomorphic-neutered.js:
        (checkNoException):
        (testNoException):
        (testFTLNoException):
        * stress/typedarray-access-neutered.js:
        (testNoException):
        * stress/typedarray-getownproperty-not-configurable.js:
        (foo):
        * test262/expectations.yaml:

2019-05-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Need to emit SetLocal if we emit MovHint in DFGByteCodeParser
        https://bugs.webkit.org/show_bug.cgi?id=197584

        Reviewed by Saam Barati.

        * stress/adhoc-setter-frame-should-emit-setlocal-again.js: Added.
        (X):
        (foo):

2019-05-03  Michael Saboff  <msaboff@apple.com>

        iOS JSC tests frequently exiting with execption after stress/json-stringify-string-builder-overflow.js.no-cjit-validate-phases
        https://bugs.webkit.org/show_bug.cgi?id=197586

        Reviewed by Keith Miller.

        We should only run one config of this test and only when we think we'll have the memory.

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

2019-05-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Generator CodeBlock generation should be idempotent
        https://bugs.webkit.org/show_bug.cgi?id=197552

        Reviewed by Keith Miller.

        Add complex.yaml, which controls how to run JSC shell more.
        We split test files into two to run macro task between them which allows debugger to be attached to VM.

        * complex.yaml: Added.
        * complex/generator-regeneration-after.js: Added.
        * complex/generator-regeneration.js: Added.
        (gen):

2019-05-02  Michael Saboff  <msaboff@apple.com>

        Unreviewed rollout of r244862.

        * stress/proxy-getOwnPropertySlots-exceptionChecks.js:

2019-05-01  Saam barati  <sbarati@apple.com>

        Baseline JIT should do argument value profiling after checking for stack overflow
        https://bugs.webkit.org/show_bug.cgi?id=197052
        <rdar://problem/50009602>

        Reviewed by Yusuke Suzuki.

        * stress/check-stack-overflow-before-value-profiling-arguments.js: Added.

2019-05-01  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Inlining Getter/Setter should care availability of ad-hocly constructed frame
        https://bugs.webkit.org/show_bug.cgi?id=197405

        Reviewed by Saam Barati.

        * stress/getter-setter-inlining-should-emit-movhint.js: Added.
        (foo):
        (test):
        (i.o.get f):
        (i.o.set f):

2019-05-01  Michael Saboff  <msaboff@apple.com>

        ASSERTION FAILED: !m_needExceptionCheck with --validateExceptionChecks=1; ProxyObject.getOwnPropertySlotCommon/JSFunction.callerGetter
        https://bugs.webkit.org/show_bug.cgi?id=197485

        Reviewed by Saam Barati.

        New test.

        * stress/proxy-getOwnPropertySlots-exceptionChecks.js: Added.
        (foo):

2019-05-01  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed correction to Test262 expectations following r244828.

        * test262/expectations.yaml:

2019-05-01  Stephan Szabo  <stephan.szabo@sony.com>

        Add memory-limited skipping to some tests generating very large strings
        https://bugs.webkit.org/show_bug.cgi?id=197437

        Reviewed by Ross Kirsling.

        * stress/StringObject-define-length-getter-rope-string-oom.js:
        * stress/create-error-out-of-memory-rope-string.js:
        * stress/string-16bit-repeat-overflow.js:

2019-04-30  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244806.
        https://bugs.webkit.org/show_bug.cgi?id=197446

        Causing Test262 and JSC test failures on multiple builds
        (Requested by ShawnRoberts on #webkit).

        Reverted changeset:

        "TypeArrays should not store properties that are canonical
        numeric indices"
        https://bugs.webkit.org/show_bug.cgi?id=197228
        https://trac.webkit.org/changeset/244806

2019-04-30  Tadeu Zagallo  <tzagallo@apple.com>

        TypeArrays should not store properties that are canonical numeric indices
        https://bugs.webkit.org/show_bug.cgi?id=197228
        <rdar://problem/49557381>

        Reviewed by Darin Adler.

        * stress/typed-array-canonical-numeric-index-string.js: Added.
        (makeTest.assert):
        (makeTest):
        (const.testInvalidIndices.makeTest.set assert):
        (const.testInvalidIndices.makeTest):
        (const.testValidIndices.makeTest.set assert):
        (const.testValidIndices.makeTest):

2019-04-29  Yusuke Suzuki  <ysuzuki@apple.com>

        normalizeMapKey should normalize NaN to one PureNaN bit pattern to make MapHash same
        https://bugs.webkit.org/show_bug.cgi?id=197362

        Reviewed by Saam Barati.

        * stress/map-with-nan.js: Added.
        (shouldBe):
        (div):
        (NaN1):
        (NaN2):
        (NaN3):
        (NaN4):
        (NaN1NoInline):
        (NaN2NoInline):
        (NaN3NoInline):
        (NaN4NoInline):
        (test1):
        (test2):
        (test3):
        (test4):
        * stress/set-with-nan.js: Added.
        (shouldBe):
        (div):
        (NaN1):
        (NaN2):
        (NaN3):
        (NaN4):
        (NaN1NoInline):
        (NaN2NoInline):
        (NaN3NoInline):
        (NaN4NoInline):
        (test2):
        (test4):

2019-04-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244708.
        https://bugs.webkit.org/show_bug.cgi?id=197334

        "Broke the debug build" (Requested by rmorisset on #webkit).

        Reverted changeset:

        "All prototypes should call didBecomePrototype()"
        https://bugs.webkit.org/show_bug.cgi?id=196315
        https://trac.webkit.org/changeset/244708

2019-04-25  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] linkPolymorphicCall now does GC
        https://bugs.webkit.org/show_bug.cgi?id=197306

        Reviewed by Saam Barati.

        * stress/link-polymorphic-call-can-gc.js: Added.
        (module):
        (instance):

2019-04-26  Robin Morisset  <rmorisset@apple.com>

        All prototypes should call didBecomePrototype()
        https://bugs.webkit.org/show_bug.cgi?id=196315

        Reviewed by Saam Barati.

        * stress/function-prototype-indexed-accessor.js: Added.

2019-04-23  Saam Barati  <sbarati@apple.com>

        LICM incorrectly assumes it'll never insert a node which provably OSR exits
        https://bugs.webkit.org/show_bug.cgi?id=196721
        <rdar://problem/49556479> 

        Reviewed by Filip Pizlo.

        * stress/licm-should-handle-if-a-hoist-causes-a-provable-osr-exit.js: Added.
        (foo):

2019-04-19  Saam Barati  <sbarati@apple.com>

        AbstractValue can represent more than int52
        https://bugs.webkit.org/show_bug.cgi?id=197118
        <rdar://problem/49969960>

        Reviewed by Michael Saboff.

        * stress/abstract-value-can-include-int52.js: Added.
        (foo):
        (index.index.8.index.60.index.65.index.1234.index.1234.parseInt.string_appeared_here.String.fromCharCode):

2019-04-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [WTF] StringBuilder should set correct m_is8Bit flag when merging
        https://bugs.webkit.org/show_bug.cgi?id=197053

        Reviewed by Saam Barati.

        * stress/merge-string-builder-in-dfg.js: Added.
        (foo):

2019-04-16  Caitlin Potter  <caitp@igalia.com>

        [JSC] Filter DontEnum properties in ProxyObject::getOwnPropertyNames()
        https://bugs.webkit.org/show_bug.cgi?id=176810

        Reviewed by Saam Barati.

        Add tests for the DontEnum filtering, and variations of other tests
        take the DontEnum-filtering path.

        * stress/proxy-own-keys.js:
        (i.catch):
        (set assert):
        (set add):
        (let.set new):
        (get let):

2019-04-15  Saam barati  <sbarati@apple.com>

        Modify how we do SetArgument when we inline varargs calls
        https://bugs.webkit.org/show_bug.cgi?id=196712
        <rdar://problem/49605012>

        Reviewed by Michael Saboff.

        * stress/get-stack-wrong-type-when-inline-varargs.js: Added.
        (foo):

2019-04-15  Saam barati  <sbarati@apple.com>

        SafeToExecute for GetByOffset/GetGetterByOffset/PutByOffset is using the wrong child for the base
        https://bugs.webkit.org/show_bug.cgi?id=196945
        <rdar://problem/49802750>

        Reviewed by Filip Pizlo.

        * stress/get-by-offset-should-use-correct-child.js: Added.
        (foo.bar):
        (foo):

2019-04-15  Robin Morisset  <rmorisset@apple.com>

        DFG should be able to constant fold Object.create() with a constant prototype operand
        https://bugs.webkit.org/show_bug.cgi?id=196886

        Reviewed by Yusuke Suzuki.

        Note that this new benchmark does not currently see a speedup with inlining removed.
        The reason is that we do not yet have inline caching for Object.create(), we only optimize it when the DFG can see statically the prototype being passed.

        * microbenchmarks/object-create-constant-prototype.js: Added.
        (test):

2019-04-15  Tadeu Zagallo  <tzagallo@apple.com>

        Incremental bytecode cache should not append function updates when loaded from memory
        https://bugs.webkit.org/show_bug.cgi?id=196865

        Reviewed by Filip Pizlo.

        * stress/bytecode-cache-shared-code-block.js: Added.
        (b):
        (program):

2019-04-13  Tadeu Zagallo  <tzagallo@apple.com>

        CodeCache should check that the UnlinkedCodeBlock was successfully created before caching it
        https://bugs.webkit.org/show_bug.cgi?id=196880

        Reviewed by Yusuke Suzuki.

        * stress/bytecode-cache-syntax-error.js: Added.
        (catch):

2019-04-12  Saam barati  <sbarati@apple.com>

        r244079 logically broke shouldSpeculateInt52
        https://bugs.webkit.org/show_bug.cgi?id=196884

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/int52-rand-function.js: Added.
        (Math.random):

2019-04-11  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] op_has_indexed_property should not assume subscript part is Uint32
        https://bugs.webkit.org/show_bug.cgi?id=196850

        Reviewed by Saam Barati.

        * stress/has-indexed-property-should-accept-non-int32.js: Added.
        (foo):

2019-04-11  Saam barati  <sbarati@apple.com>

        Remove invalid assertion in operationInstanceOfCustom
        https://bugs.webkit.org/show_bug.cgi?id=196842
        <rdar://problem/49725493>

        Reviewed by Michael Saboff.

        * stress/operationInstanceOfCustom-bad-assertion.js: Added.

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

        AbstractValue::validateOSREntryValue is wrong for Int52 constants
        https://bugs.webkit.org/show_bug.cgi?id=196801
        <rdar://problem/49771122>

        Reviewed by Yusuke Suzuki.

        * stress/abstract-value-int52-constant-validation-should-not-care-about-representation.js: Added.

2019-04-10  Robin Morisset  <rmorisset@apple.com>

        We should clear m_needsOverflowCheck when hitting an exception in defineProperties in ObjectConstructor.cpp
        https://bugs.webkit.org/show_bug.cgi?id=196746

        Reviewed by Yusuke Suzuki.

        * stress/cyclic-define-properties.js: Added.
        (foo):

2019-04-09  Saam barati  <sbarati@apple.com>

        Clean up Int52 code and some bugs in it
        https://bugs.webkit.org/show_bug.cgi?id=196639
        <rdar://problem/49515757>

        Reviewed by Yusuke Suzuki.

        * stress/spec-any-int-as-double-produces-any-int52-from-int52-rep.js: Added.

2019-04-09  Tadeu Zagallo  <tzagallo@apple.com>

        ASSERTION FAILED: !scope.exception() || !hasProperty in JSObject::get
        https://bugs.webkit.org/show_bug.cgi?id=196708
        <rdar://problem/49556803>

        Reviewed by Yusuke Suzuki.

        * stress/proxy-getter-stack-overflow.js: Added.
        (const.handler.get target):
        (const.handler.has):
        (try.with):
        (catch):

2019-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] DFG should respect node's strict flag
        https://bugs.webkit.org/show_bug.cgi?id=196617

        Reviewed by Saam Barati.

        * stress/put-by-val-direct-should-respect-strict-mode-of-inlining-codeblock.js: Added.
        (shouldEqual):
        (makeUnwriteableUnconfigurableObject):
        (runTest):
        * stress/put-dynamic-var-strict-and-sloppy.js: Added.
        (shouldBe):
        (shouldThrow):
        (with.result):
        (with.putValueStrict):
        (with.putValueSloppy):

2019-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] isRope jump in StringSlice should not jump over register allocations
        https://bugs.webkit.org/show_bug.cgi?id=196716

        Reviewed by Saam Barati.

        * stress/is-rope-check-in-string-slice-should-not-jump-over-register-allocations.js: Added.
        (foo.bar):
        (foo):

2019-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] to_index_string should not assume incoming value is Uint32
        https://bugs.webkit.org/show_bug.cgi?id=196713

        Reviewed by Saam Barati.

        * stress/to-index-string-should-not-assume-incoming-value-is-uint32.js: Added.
        (foo):

2019-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add more tests for r243966
        https://bugs.webkit.org/show_bug.cgi?id=196711

        Reviewed by Saam Barati.

        Adding one more test for r243966 fix. The added test will not crash after r243966.

        * stress/stress-cleared-calllinkinfo.js: Added.
        (runNearStackLimit.t):
        (runNearStackLimit):
        (repeat):
        (cls):
        (let.item.of.array.runNearStackLimit):

2019-04-08  Saam Barati  <sbarati@apple.com>

        WebAssembly.RuntimeError missing exception check
        https://bugs.webkit.org/show_bug.cgi?id=196700
        <rdar://problem/49693932>

        Reviewed by Yusuke Suzuki.

        * wasm/js-api/runtime-error-should-exception-check.js: Added.

2019-04-08  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, rolling in r243948 with test fix
        https://bugs.webkit.org/show_bug.cgi?id=196486

        * stress/arrow-function-and-use-strict-directive.js: Added.
        * stress/arrow-function-syntax.js: Added.
        (checkSyntax):
        (checkSyntaxError):

2019-04-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243948.

        Caused inspector/runtime/parse.html to fail

        Reverted changeset:

        "SIGSEGV in JSC::BytecodeGenerator::addStringConstant"
        https://bugs.webkit.org/show_bug.cgi?id=196486
        https://trac.webkit.org/changeset/243948

2019-04-08  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243943.

        Caused test262 failures.

        Reverted changeset:

        "[JSC] Filter DontEnum properties in
        ProxyObject::getOwnPropertyNames()"
        https://bugs.webkit.org/show_bug.cgi?id=176810
        https://trac.webkit.org/changeset/243943

2019-04-07  Michael Saboff  <msaboff@apple.com>

        REGRESSION (r243642): Crash in reddit.com page
        https://bugs.webkit.org/show_bug.cgi?id=196684

        Reviewed by Geoffrey Garen.

        New regression test.

        * stress/regexp-nongreedy-charclass-backtracks.js: Added.

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

        [JSC] CallLinkInfo should clear Callee or CodeBlock even if it is unlinked by jettison
        https://bugs.webkit.org/show_bug.cgi?id=196683

        Reviewed by Saam Barati.

        * stress/clear-callee-or-codeblock-in-calllinkinfo-even-cleared-by-jettison.js: Added.
        (foo):

2019-04-05  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] OSRExit recovery for SpeculativeAdd does not consier "A = A + A" pattern
        https://bugs.webkit.org/show_bug.cgi?id=196582

        Reviewed by Saam Barati.

        * stress/add-overflow-check-with-three-same-registers.js: Added.
        (foo):
        (Number.prototype.valueOf):
        (runWithNumber):

2019-04-05  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r243665.

        Caused iOS JSC tests to exit with an exception.

        Reverted changeset:

        "Assertion failed in JSC::createError"
        https://bugs.webkit.org/show_bug.cgi?id=196305
        https://trac.webkit.org/changeset/243665

2019-04-05  Yusuke Suzuki  <ysuzuki@apple.com>

        SIGSEGV in JSC::BytecodeGenerator::addStringConstant
        https://bugs.webkit.org/show_bug.cgi?id=196486

        Reviewed by Saam Barati.

        * stress/arrow-function-and-use-strict-directive.js: Added.
        * stress/arrow-function-syntax.js: Added. Checking EOF token handling.
        (checkSyntax):
        (checkSyntaxError): Currently not using it. But it is useful for testing more things related to arrow function syntax.

2019-04-05  Caitlin Potter  <caitp@igalia.com>

        [JSC] Filter DontEnum properties in ProxyObject::getOwnPropertyNames()
        https://bugs.webkit.org/show_bug.cgi?id=176810

        Reviewed by Saam Barati.

        Add tests for the DontEnum filtering, and variations of other tests
        take the DontEnum-filtering path.

        * stress/proxy-own-keys.js:
        (i.catch):
        (set assert):
        (set add):
        (let.set new):
        (get let):

2019-04-05  Caitlin Potter  <caitp@igalia.com>

        [JSC] throw if 'ownKeys' Proxy trap result contains duplicate keys
        https://bugs.webkit.org/show_bug.cgi?id=185211

        Reviewed by Saam Barati.

        This is for the normative spec change in https://github.com/tc39/ecma262/pull/833

        This changes several assertions to expect a TypeError to be thrown (in some cases,
        changing thee expected message).

        * es6/Proxy_ownKeys_duplicates.js:
        (handler):
        (shouldThrow):
        (test):
        * stress/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js:
        (shouldThrow):
        * stress/proxy-own-keys.js:
        (i.catch):
        (assert):

2019-04-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] makeBoundFunction should not assume incoming "length" value is Int32 because it performs some calculation in bytecode
        https://bugs.webkit.org/show_bug.cgi?id=196631

        Reviewed by Saam Barati.

        * stress/make-bound-function-should-not-assume-int32-length.js: Added.
        (assert):
        (test):
        (foo):

2019-04-04  Saam Barati  <sbarati@apple.com>

        Unreviewed. Make the test from r243906 catch the thrown exceptions.

        * stress/inferred-types-regex-matches-array.js:

2019-04-04  Saam Barati  <sbarati@apple.com>

        createRegExpMatchesArray does not respect inferred types
        https://bugs.webkit.org/show_bug.cgi?id=193287

        Reviewed by Yusuke Suzuki.

        This checks in the test case for 193287. This issue was discovered by
        Samuel Groß of Google Project Zero.

        * stress/inferred-types-regex-matches-array.js: Added.

2019-04-04  Saam barati  <sbarati@apple.com>

        Teach Call ICs how to call Wasm
        https://bugs.webkit.org/show_bug.cgi?id=196387

        Reviewed by Filip Pizlo.

        * wasm/function-tests/stack-trace.js:

2019-04-04  Caio Lima  <ticaiolima@gmail.com>

        [JSC] We should consider moving UnlinkedFunctionExecutable::m_parentScopeTDZVariables to RareData
        https://bugs.webkit.org/show_bug.cgi?id=194944

        Reviewed by Keith Miller.

        * stress/verify-bytecode-generator-cached-variables-under-tdz.js: Added.

2019-04-04  Tadeu Zagallo  <tzagallo@apple.com>

        Cache bytecode for jsc.cpp helpers and fix CachedStringImpl
        https://bugs.webkit.org/show_bug.cgi?id=196409

        Reviewed by Saam Barati.

        * stress/bytecode-cache-cached-string-impl.js: Added.
        (f):
        (g):
        * stress/bytecode-cache-run-string.js: Added.

2019-04-03  Robin Morisset  <rmorisset@apple.com>

        B3 should use associativity to optimize expression trees
        https://bugs.webkit.org/show_bug.cgi?id=194081

        Reviewed by Filip Pizlo.

        Added three microbenchmarks:
        - add-tree should be the ideal case, but there is no speedup because we are currently unable to prove that the CheckAdd won't overflow
        - bit-xor-tree most closely matches the situation where the optimization triggers on the JetStream2 subtests where it triggers:
          an unbalanced expression tree of size 8 that can be balanced, with no other optimizations being unlocked. 16% speedup
        - bit-or-tree is an ideal case, where the reassociation also enables a ton of further simplifications. 42% speedup

        * microbenchmarks/add-tree.js: Added.
        * microbenchmarks/bit-or-tree.js: Added.
        * microbenchmarks/bit-xor-tree.js: Added.

2019-04-03  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Exception verification crash on operationArrayIndexOfValueInt32OrContiguous
        https://bugs.webkit.org/show_bug.cgi?id=196574

        Reviewed by Saam Barati.

        * stress/string-index-of-exception-check.js: Added.
        (blurType):
        (1.forEach):

2019-03-29  Tadeu Zagallo  <tzagallo@apple.com>

        Assertion failed in JSC::createError
        https://bugs.webkit.org/show_bug.cgi?id=196305
        <rdar://problem/49387382>

        Reviewed by Saam Barati.

        * stress/create-error-out-of-memory-rope-string-2.js: Added.
        (assert):
        (catch):

2019-03-28  Saam Barati  <sbarati@apple.com>

        BackwardsGraph needs to consider back edges as the backward's root successor
        https://bugs.webkit.org/show_bug.cgi?id=195991

        Reviewed by Filip Pizlo.

        * stress/map-b3-licm-infinite-loop.js: Added.

2019-03-28  Tadeu Zagallo  <tzagallo@apple.com>

        CodeBlock::jettison() should disallow repatching its own calls
        https://bugs.webkit.org/show_bug.cgi?id=196359
        <rdar://problem/48973663>

        Reviewed by Saam Barati.

        * stress/call-link-info-osrexit-repatch.js: Added.
        (foo):

2019-03-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] imports-oom.js intermittently fails
        https://bugs.webkit.org/show_bug.cgi?id=196373

        Reviewed by Saam Barati.

        imports-oom.js ensures that a wasm module compilation / instantiation throws an OOM error instead of crashing when compiling / instantiating their entry points
        with extremely low executable memory amount. And this test expects we at least once successfully compile, instantiate, and execute a wasm module to test that
        wasm implementation is always throwing an OOM error. However, maybe due to wasm changes, the amount of executable memory consumed by wasm compilation is changed,
        and now we may encounter an OOM error at the first compilation. Since imports-oom.js randomize the amount of executable memory used by the generated wasm module,
        imports-oom.js intermittently fails when it first generates large wasm module which cannot be compiled.

        This patch reduces the maxParams from 32 to 8 to reduce the size of randomly generated wasm module. Since we repeatedly generate wasm modules, this test soon encounter
        an expected OOM error. But this avoids the situation that we get an OOM error when we compile a first wasm module.

        * wasm/lowExecutableMemory/imports-oom.js:

2019-03-27  Saam Barati  <sbarati@apple.com>

        validateOSREntryValue with Int52 should box the value being checked into double format
        https://bugs.webkit.org/show_bug.cgi?id=196313
        <rdar://problem/49306703>

        Reviewed by Yusuke Suzuki.

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

2019-03-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Owner of watchpoints should validate at GC finalizing phase
        https://bugs.webkit.org/show_bug.cgi?id=195827

        Reviewed by Filip Pizlo.

        * stress/gc-should-reap-dead-watchpoints.js: Added.
        (foo):
        (A.prototype.y):
        (A):

2019-03-26  Dominik Infuehr  <dinfuehr@igalia.com>

        Skip WebAssembly test on 32-bit systems
        https://bugs.webkit.org/show_bug.cgi?id=196206

        Reviewed by Saam Barati.

        Invoking runDefault executes test immediately even though
        that test should be skipped due to missing WASM support.
        Therefore remove runDefault.

        * wasm/regress/web-assembly-link-error-exception-check.js:

2019-03-26  Tadeu Zagallo  <tzagallo@apple.com>

        WebAssembly: Fix f32.min, f64.min and f64.max operations on NaN
        https://bugs.webkit.org/show_bug.cgi?id=196217

        Reviewed by Saam Barati.

        Re-enable all NaN tests for f32.min, f64.min and f64.max.

        * wasm/spec-tests/f32.wast.js:
        * wasm/spec-tests/f64.wast.js:
        * wasm/wasm.json:

2019-03-25  Keith Miller  <keith_miller@apple.com>

        ASSERTION FAILED: m_op == CompareStrictEq in JSC::DFG::Node::convertToCompareEqPtr(JSC::DFG::FrozenValue *, JSC::DFG::Edge)
        https://bugs.webkit.org/show_bug.cgi?id=196176

        Reviewed by Saam Barati.

        * stress/object-is-fold-to-compare-eq-ptr.js: Added.
        (main.v10):
        (main):

2019-03-25  Tadeu Zagallo  <tzagallo@apple.com>

        WebAssembly: f32.max with NaN generates incorrect result
        https://bugs.webkit.org/show_bug.cgi?id=175691
        <rdar://problem/33952228>

        Reviewed by Saam Barati.

        Enable all f32.max NaN tests

        * wasm/spec-tests/f32.wast.js:
        * wasm/wasm.json:

2019-03-24  Dominik Infuehr  <dinfuehr@igalia.com>

        [JSC] Move test into directory for WASM tests
        https://bugs.webkit.org/show_bug.cgi?id=196187

        Reviewed by Mark Lam.

        Move Test into wasm-directory. Otherwise this test
        is also executed on systems without WASM support.

        * wasm/regress/web-assembly-link-error-exception-check.js: Renamed from JSTests/stress/web-assembly-link-error-exception-check.js.

2019-03-23  Mark Lam  <mark.lam@apple.com>

        Rolling out r243032 and r243071 because the fix is incorrect.
        https://bugs.webkit.org/show_bug.cgi?id=195892
        <rdar://problem/48981239>

        Not reviewed.

        * stress/check-object-property-condition-liveness-before-accessing-it-when-watchpoints-fire.js: Removed.

2019-03-22  Mark Lam  <mark.lam@apple.com>

        Placate exception check validation in genericTypedArrayViewProtoFuncLastIndexOf().
        https://bugs.webkit.org/show_bug.cgi?id=196154
        <rdar://problem/49145307>

        Reviewed by Filip Pizlo.

        Also added //@ runDefault constraint to web-assembly-link-error-exception-check.js.
        There's no need to run this test on more than 1 test configuration.

        * stress/typed-array-lastIndexOf-exception-check.js: Added.
        * stress/web-assembly-link-error-exception-check.js:

2019-03-22  Mark Lam  <mark.lam@apple.com>

        Placate exception check validation in constructJSWebAssemblyLinkError().
        https://bugs.webkit.org/show_bug.cgi?id=196152
        <rdar://problem/49145257>

        Reviewed by Michael Saboff.

        * stress/web-assembly-link-error-exception-check.js: Added.

2019-03-22  Dominik Infuehr  <dinfuehr@igalia.com>

        Skip tests running out of memory on ARM/MIPS
        https://bugs.webkit.org/show_bug.cgi?id=196131

        Unreviewed. Skip test if memory is limited.

        * microbenchmarks/put-by-val-direct-large-index.js:

2019-03-21  Mark Lam  <mark.lam@apple.com>

        Remove an invalid assertion in DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNullOrUndefined().
        https://bugs.webkit.org/show_bug.cgi?id=196116
        <rdar://problem/48976951>

        Reviewed by Filip Pizlo.

        * stress/dfg-compare-eq-via-nonSpeculativeNonPeepholeCompareNullOrUndefined.js: Added.

2019-03-21  Tadeu Zagallo  <tzagallo@apple.com>

        JSObject::putDirectIndexSlowOrBeyondVectorLength should check if indexIsSufficientlyBeyondLengthForSparseMap
        https://bugs.webkit.org/show_bug.cgi?id=196078
        <rdar://problem/35925380>

        Reviewed by Mark Lam.

        Add a new benchmark that allocates several objects and invokes put_by_val_direct
        with a large index. run-jsc-benchmarks says "definitely 1.6178x faster".

        * microbenchmarks/put-by-val-direct-large-index.js: Added.

2019-03-21  Mark Lam  <mark.lam@apple.com>

        Placate exception check validation in operationArrayIndexOfString().
        https://bugs.webkit.org/show_bug.cgi?id=196067
        <rdar://problem/49056572>

        Reviewed by Michael Saboff.

        * stress/string-equal-exception-check.js: Added.

2019-03-21  Mark Lam  <mark.lam@apple.com>

        Cap length of an array with spread to MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.
        https://bugs.webkit.org/show_bug.cgi?id=196055
        <rdar://problem/49067448>

        Reviewed by Yusuke Suzuki.

        * stress/new_array_with_spread-should-cap-array-size-to-MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.js: Added.

2019-03-20  Saam Barati  <sbarati@apple.com>

        typeOfDoubleSum is wrong for when NaN can be produced
        https://bugs.webkit.org/show_bug.cgi?id=196030

        Reviewed by Filip Pizlo.

        * stress/double-add-sub-mul-can-produce-nan.js: Added.
        (assert):
        (noInline.sub):
        (noInline):
        (assert.mul):
        (assert.add):

2019-03-20  Yusuke Suzuki  <ysuzuki@apple.com>

        Update the test to ensure OutOfMemoryError is thrown as intended
        https://bugs.webkit.org/show_bug.cgi?id=196032
        <rdar://problem/46842740>

        Rubber stamped by Saam Barati.

        * stress/create-error-out-of-memory-rope-string.js:
        (assert):
        (catch):

2019-03-20  Tadeu Zagallo  <tzagallo@apple.com>

        JSC::createError needs to check for OOM in errorDescriptionForValue
        https://bugs.webkit.org/show_bug.cgi?id=196032
        <rdar://problem/46842740>

        Reviewed by Mark Lam.

        * stress/create-error-out-of-memory-rope-string.js: Added.

2019-03-19  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reduce # of iterations to avoid timing out after r242991
        https://bugs.webkit.org/show_bug.cgi?id=195791

        To avoid timing out, this patch reduces it from 3e7 to 1e7. 1e7 iteration counts still reproduce the issue at 60%.

        * stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js:

2019-03-19  Caio Lima  <ticaiolima@gmail.com>

        [JSC] microbenchmarks/generate-multiple-llint-entrypoints.js is running out of executable memory on ARMv7
        https://bugs.webkit.org/show_bug.cgi?id=195950

        Unreviewed, reducing the amount of memory used on this test to avoid
        OOM on devices with memory restrictions.

        * microbenchmarks/generate-multiple-llint-entrypoints.js:

2019-03-19  Caio Lima  <ticaiolima@gmail.com>

        [JSC] LLIntEntryPoint creates same DirectJITCode for all functions
        https://bugs.webkit.org/show_bug.cgi?id=194648

        Reviewed by Keith Miller.

        * microbenchmarks/generate-multiple-llint-entrypoints.js: Added.

2019-03-18  Mark Lam  <mark.lam@apple.com>

        Missing a ThrowScope release in JSObject::toString().
        https://bugs.webkit.org/show_bug.cgi?id=195893
        <rdar://problem/48970986>

        Reviewed by Michael Saboff.

        * stress/to-string-exception-check-release.js: Added.

2019-03-18  Mark Lam  <mark.lam@apple.com>

        Structure::flattenDictionary() should clear unused property slots.
        https://bugs.webkit.org/show_bug.cgi?id=195871
        <rdar://problem/48959497>

        Reviewed by Michael Saboff.

        * stress/structure-flattenDictionary-should-clear-unused-property-slots.js: Added.

2019-03-15  Mark Lam  <mark.lam@apple.com>

        Need to check ObjectPropertyCondition liveness before accessing it when firing watchpoints.
        https://bugs.webkit.org/show_bug.cgi?id=195827
        <rdar://problem/48845513>

        Reviewed by Filip Pizlo.

        * stress/check-object-property-condition-liveness-before-accessing-it-when-watchpoints-fire.js: Added.

2019-03-15  Dominik Infuehr  <dinfuehr@igalia.com>

        [ARM,MIPS] Skip slow tests
        https://bugs.webkit.org/show_bug.cgi?id=195799

        Unreviewed, test does not finish on ARM and MIPS within the
        timeout limit.

        * stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js:

2019-03-14  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Retain PrivateName of Symbol before passing it to operations potentially incurring GC
        https://bugs.webkit.org/show_bug.cgi?id=195791
        <rdar://problem/48806130>

        Reviewed by Mark Lam.

        * stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js: Added.
        (foo):

2019-03-14  Saam barati  <sbarati@apple.com>

        We can't remove code after ForceOSRExit until after FixupPhase
        https://bugs.webkit.org/show_bug.cgi?id=186916
        <rdar://problem/41396612>

        Reviewed by Yusuke Suzuki.

        * stress/movhint-backwards-propagation-must-merge-use-as-value-add.js: Added.
        (foo):
        * stress/movhint-backwards-propagation-must-merge-use-as-value.js: Added.
        (foo):

2019-03-13  Michael Saboff  <msaboff@apple.com>

        ASSERTION FAILED: regexp->isValid() or ASSERTION FAILED: !isCompilationThread()
        https://bugs.webkit.org/show_bug.cgi?id=195735

        Reviewed by Mark Lam.

        New regression test.

        * stress/dont-strength-reduce-regexp-with-compile-error.js: Added.
        (foo):
        (bar):

2019-03-14  Saam barati  <sbarati@apple.com>

        Fixup uses KnownInt32 incorrectly in some nodes
        https://bugs.webkit.org/show_bug.cgi?id=195279
        <rdar://problem/47915654>

        Reviewed by Yusuke Suzuki.

        * stress/known-int32-cant-be-used-across-bytecode-boundary.js: Added.
        (foo):

2019-03-14  Keith Miller  <keith_miller@apple.com>

        DFG liveness can't skip tail caller inline frames
        https://bugs.webkit.org/show_bug.cgi?id=195715

        Reviewed by Saam Barati.

        * stress/dfg-scan-inlined-tail-caller-frames-liveness.js:
        (i.foo):

2019-03-13  Mark Lam  <mark.lam@apple.com>

        Gardening: reducing the variants on 2 tests to avoid timing out on JSC Debug queue.
        https://bugs.webkit.org/show_bug.cgi?id=195415

        Not reviewed.

        Changed these tests to only run the default configuration.
        The ftl-no-cjit-validate-sampling-profiler variant was timing out.
        There's no strong need to run this test on that variant.

        * stress/dfg-to-string-on-int-does-gc.js:
        * stress/dfg-to-string-on-string-or-string-object-does-not-gc.js:

2019-03-13  Dominik Infuehr  <dinfuehr@igalia.com>

        String overflow when using StringBuilder in JSC::createError
        https://bugs.webkit.org/show_bug.cgi?id=194957

        Reviewed by Mark Lam.

        Add test string-overflow-createError-bulder.js that overflows
        StringBuilder in notAFunctionSourceAppender. The second new test
        string-overflow-createError-fit.js has an error message that doesn't
        overflow, it still failed since the String's capacity can't be doubled.
        Run test string-overflow-createError.js only in the default
        configuration to reduce memory consumption when running the test
        in all configurations on multiple CPUs in parallel.

        * stress/string-overflow-createError-builder.js: Copied from JSTests/stress/string-overflow-createError.js.
        (catch):
        * stress/string-overflow-createError-fit.js: Copied from JSTests/stress/string-overflow-createError.js.
        (catch):
        * stress/string-overflow-createError.js:

2019-03-12  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] OSR entry should respect abstract values in addition to flush formats
        https://bugs.webkit.org/show_bug.cgi?id=195653

        Reviewed by Mark Lam.

        * stress/osr-entry-locals-none.js: Added.

2019-03-12  Michael Saboff  <msaboff@apple.com>

        REGRESSION (iOS 12.2): Webpage using CoffeeScript crashes
        https://bugs.webkit.org/show_bug.cgi?id=195613

        Reviewed by Mark Lam.

        New regression test.

        * stress/regexp-backref-inbounds.js: Added.
        (testRegExp):

2019-03-12  Mark Lam  <mark.lam@apple.com>

        The HasIndexedProperty node does GC.
        https://bugs.webkit.org/show_bug.cgi?id=195559
        <rdar://problem/48767923>

        Reviewed by Yusuke Suzuki.

        * stress/HasIndexedProperty-does-gc.js: Added.

2019-03-11  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement "~" unary operation
        https://bugs.webkit.org/show_bug.cgi?id=182216

        Reviewed by Keith Miller.

        * stress/big-int-bit-not-general.js: Added.
        * stress/big-int-bitwise-not-jit.js: Added.
        * stress/big-int-bitwise-not-wrapped-value.js: Added.
        * stress/bit-op-with-object-returning-int32.js:
        * stress/bitwise-not-fixup-rules.js: Added.
        * stress/value-bit-not-ai-rule.js: Added.

2019-03-10  Ross Kirsling  <ross.kirsling@sony.com>

        Invalid flags in a RegExp literal should be an early SyntaxError
        https://bugs.webkit.org/show_bug.cgi?id=195514

        Reviewed by Darin Adler.

        * test262/expectations.yaml:
        Mark 4 test cases as passing.

        * stress/regexp-syntax-error-invalid-flags.js:
        * stress/regress-161995.js: Removed.
        Update existing test, merging in an older test for the same behavior.

2019-03-08  Mark Lam  <mark.lam@apple.com>

        Stack overflow crash in JSC::JSObject::hasInstance.
        https://bugs.webkit.org/show_bug.cgi?id=195458
        <rdar://problem/48710195>

        Reviewed by Yusuke Suzuki.

        * stress/stack-overflow-in-custom-hasInstance.js: Added.

2019-03-08  Tadeu Zagallo  <tzagallo@apple.com>

        op_check_tdz does not def its argument
        https://bugs.webkit.org/show_bug.cgi?id=192880
        <rdar://problem/46221598>

        Reviewed by Saam Barati.

        * microbenchmarks/let-for-in.js: Added.
        (foo):

2019-03-07  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] StringFromCharCode fast path should accept 0xff in DFG and FTL
        https://bugs.webkit.org/show_bug.cgi?id=195429

        Reviewed by Saam Barati.

        * stress/must-handled-values-should-not-be-used-as-proven-constants-in-cfa.js: Added.
        (foo):
        * stress/string-from-char-code-255.js: Added.

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

        Fix incorrect handling of try-finally completion values.
        https://bugs.webkit.org/show_bug.cgi?id=195131
        <rdar://problem/46222079>

        Reviewed by Saam Barati and Yusuke Suzuki.

        Added many permutations of new test case to test-finally.js.  test-finally.js has
        been run on Chrome and Firefox as a sanity check, and we confirmed that all the
        tests passes there as well.

        * stress/test-finally.js:

2019-03-06  Saam Barati  <sbarati@apple.com>

        Air::reportUsedRegisters must padInterference
        https://bugs.webkit.org/show_bug.cgi?id=195303
        <rdar://problem/48270343>

        Reviewed by Keith Miller.

        * stress/optional-def-arg-width-should-be-both-early-and-late-use.js: Added.

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

        [JSC] AI should not propagate AbstractValue relying on constant folding phase
        https://bugs.webkit.org/show_bug.cgi?id=195375

        Reviewed by Saam Barati.

        * stress/make-rope-should-not-propagate-constant-folded-value-in-ai.js: Added.
        (let.array):

2019-03-05  Saam barati  <sbarati@apple.com>

        op_switch_char broken for rope strings after JSRopeString layout rewrite
        https://bugs.webkit.org/show_bug.cgi?id=195339
        <rdar://problem/48592545>

        Reviewed by Yusuke Suzuki.

        * stress/switch-on-char-llint-rope.js: Added.

2019-03-04  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Store bits for JSRopeString in 3 stores
        https://bugs.webkit.org/show_bug.cgi?id=195234

        Reviewed by Saam Barati.

        * stress/null-rope-and-collectors.js: Added.

2019-03-01  Dominik Infuehr  <dinfuehr@igalia.com>

        Unskip test read-dead-bytecode-locals-in-must-have-handle-values2.js on ARM/MIPS
        https://bugs.webkit.org/show_bug.cgi?id=195207

        Unreviewed. After test runtime was reduced in r242213, test can be
        run again on ARM/MIPS.

        * stress/read-dead-bytecode-locals-in-must-handle-values2.js:

2019-02-28  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] sizeof(JSString) should be 16
        https://bugs.webkit.org/show_bug.cgi?id=194375

        Reviewed by Saam Barati.

        * microbenchmarks/make-rope.js: Added.
        (makeRope):
        * stress/to-lower-case-intrinsic-on-empty-rope.js: We no longer allow 0 length JSString except for jsEmptyString singleton per VM.
        (returnRope.helper): Deleted.
        (returnRope): Deleted.

2019-02-28  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, reduce the count in the stress/read-dead-bytecode-locals-in-must-handle-values2.js
        https://bugs.webkit.org/show_bug.cgi?id=195144

        1e8 takes too much time in the Debug build. I tried 1e5 with the old Debug build and it successfully reproduced the issue.
        Change the number from 1e8 to 1e5.

        * stress/read-dead-bytecode-locals-in-must-handle-values2.js:
        (foo):

2019-02-28  Dominik Infuehr  <dinfuehr@igalia.com>

        Test times out on ARM/MIPS
        https://bugs.webkit.org/show_bug.cgi?id=195168

        Unreviewed. Skip test on ARM/MIPS.

        * stress/read-dead-bytecode-locals-in-must-handle-values2.js:

2019-02-27  Mark Lam  <mark.lam@apple.com>

        The parser is failing to record the token location of new in new.target.
        https://bugs.webkit.org/show_bug.cgi?id=195127
        <rdar://problem/39645578>

        Reviewed by Yusuke Suzuki.

        * stress/parser-should-record-token-location-of-new-dot-target.js: Added.

2019-02-27  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] mustHandleValues for dead bytecode locals should be ignored in DFG phases
        https://bugs.webkit.org/show_bug.cgi?id=195144
        <rdar://problem/47595961>

        Reviewed by Mark Lam.

        * stress/read-dead-bytecode-locals-in-must-handle-values1.js: Added.
        (bar):
        (foo):
        * stress/read-dead-bytecode-locals-in-must-handle-values2.js: Added.
        (bar):
        (foo):

2019-02-27  Robin Morisset  <rmorisset@apple.com>

        DFG: Loop-invariant code motion (LICM) should not hoist dead code
        https://bugs.webkit.org/show_bug.cgi?id=194945
        <rdar://problem/48311657>

        Reviewed by Mark Lam.

        * stress/licm-dead-code.js: Added.

2019-02-26  Yusuke Suzuki  <ysuzuki@apple.com>

        REGRESSION: stress/regress-178386.js is timing out on JSC debug bot
        https://bugs.webkit.org/show_bug.cgi?id=194677
        <rdar://problem/48112492>

        Reviewed by Mark Lam.

        Before r241233, String.fromCharCode (except for an empty string) always returns 16bit string.
        This makes the rope generated by padEnd 16bit. When we resolve the rope inside JSON.stringify,
        it immediately fails due the large size.

        After r241233, String.fromCharCode starts returning 8bit string if possible. So the rope becomes
        8bit, and we successfully resolve the rope in this case. Resolving such a large rope takes long
        time and that is why stress/regress-178386.js starts timing out. Note that, the test fails with
        OOM error anyway because JSON.stringify's builder overflows with such a large string input.

        This patch changes the test to produce 16bit string from String.fromCharCode.

        * stress/regress-178386.js:

2019-02-26  Mark Lam  <mark.lam@apple.com>

        wasmToJS() should purify incoming NaNs.
        https://bugs.webkit.org/show_bug.cgi?id=194807
        <rdar://problem/48189132>

        Reviewed by Saam Barati.

        * wasm/regress/wasmToJS-should-purify-NaNs.js: Added.

2019-02-26  Guillaume Emont  <guijemont@igalia.com>

        [JSC] Repeat string created from Array.prototype.join() take too much memory
        https://bugs.webkit.org/show_bug.cgi?id=193912

        Reviewed by Saam Barati.

        Added a test and a microbenchmark for corner cases of
        Array.prototype.join() with an uninitialized array.

        * microbenchmarks/array-prototype-join-uninitialized.js: Added.
        * stress/array-prototype-join-uninitialized.js: Added.
        (testArray):
        (testABC):
        (B):
        (C):

2019-02-22  Robin Morisset  <rmorisset@apple.com>

        DFGBytecodeParser should not declare that a node won't clobberExit if DFGFixupPhase can later declare it does clobberExit
        https://bugs.webkit.org/show_bug.cgi?id=194953
        <rdar://problem/47595253>

        Reviewed by Saam Barati.

        I could not make this work without the infinite loop, so I am using a watchdog to be able to use it as a regression test.

        * stress/has-indexed-property-with-worsening-array-mode.js: Added.

2019-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
        https://bugs.webkit.org/show_bug.cgi?id=172848
        <rdar://problem/25709212>

        Reviewed by Mark Lam.

        * typeProfiler/inheritance.js:
        Rewrite the test slightly for clarity. The hoisting was confusing.

        * heapProfiler/class-names.js: Added.
        (MyES5Class):
        (MyES6Class):
        (MyES6Subclass):
        Test object types and improved class names.

        * heapProfiler/driver/driver.js:
        (CheapHeapSnapshotNode):
        (CheapHeapSnapshot):
        (createCheapHeapSnapshot):
        (HeapSnapshot):
        (createHeapSnapshot):
        Update snapshot parsing from version 1 to version 2.

2019-02-19  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r241784.

        Broke all OpenSource builds.

        Reverted changeset:

        "Web Inspector: Improve ES6 Class instances in Heap Snapshot
        instances view"
        https://bugs.webkit.org/show_bug.cgi?id=172848
        https://trac.webkit.org/changeset/241784

2019-02-19  Joseph Pecoraro  <pecoraro@apple.com>

        Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
        https://bugs.webkit.org/show_bug.cgi?id=172848
        <rdar://problem/25709212>

        Reviewed by Mark Lam.

        * typeProfiler/inheritance.js:
        Rewrite the test slightly for clarity. The hoisting was confusing.

        * heapProfiler/class-names.js: Added.
        (MyES5Class):
        (MyES6Class):
        (MyES6Subclass):
        Test object types and improved class names.

        * heapProfiler/driver/driver.js:
        (CheapHeapSnapshotNode):
        (CheapHeapSnapshot):
        (createCheapHeapSnapshot):
        (HeapSnapshot):
        (createHeapSnapshot):
        Update snapshot parsing from version 1 to version 2.

2019-02-18  Dominik Infuehr  <dinfuehr@igalia.com>

        [ARM] Fix crash with sampling profiler
        https://bugs.webkit.org/show_bug.cgi?id=194772

        Reviewed by Mark Lam.

        Do not skip test since crash with sampling profiler is now fixed.

        * stress/sampling-profiler-richards.js:

2019-02-18  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Add LazyClassStructure::getInitializedOnMainThread
        https://bugs.webkit.org/show_bug.cgi?id=194784
        <rdar://problem/48154820>

        Reviewed by Mark Lam.

        * stress/lazy-initialization-done-a-priori-if-jit-enabled.js: Added.
        (getProperties):
        (getRandomProperty):
        (i.catch):

2019-02-18  Dominik Infuehr  <dinfuehr@igalia.com>

        [ARM] Test gardening: Test running out of executable memory
        https://bugs.webkit.org/show_bug.cgi?id=194771

        Unreviewed. Do not run test without LLInt, test is running out of executable
        memory on ARM otherwise.

        * stress/tagged-template-object-collect.js:

2019-02-18  Tomas Popela  <tpopela@redhat.com>

        Unreviewed, skip the test on platforms without sampling profiler

        * stress/sampling-profiler-stack-trace-with-double-quote-in-function-name.js:
        (platformSupportsSamplingProfiler.foo):
        (platformSupportsSamplingProfiler.test):
        (platformSupportsSamplingProfiler):
        (foo): Deleted.
        (test): Deleted.

2019-02-17  Saam Barati  <sbarati@apple.com>

        Deadlock when adding a Structure property transition and then doing incremental marking
        https://bugs.webkit.org/show_bug.cgi?id=194767

        Reviewed by Mark Lam.

        * stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js: Added.

2019-02-15  Michael Saboff  <msaboff@apple.com>

        RELEASE_ASSERT at com.apple.JavaScriptCore: JSC::jsSubstringOfResolved
        https://bugs.webkit.org/show_bug.cgi?id=194558

        Reviewed by Saam Barati.

        New regression test.

        * stress/regexp-unicode-within-string.js: Added.

2019-02-15  Mark Lam  <mark.lam@apple.com>

        SamplingProfiler::stackTracesAsJSON() should escape strings.
        https://bugs.webkit.org/show_bug.cgi?id=194649
        <rdar://problem/48072386>

        Reviewed by Saam Barati.

        * stress/sampling-profiler-stack-trace-with-double-quote-in-function-name.js: Added.
        * stress/type-profiler-with-double-quote-in-constructor-name.js: Added.
        * stress/type-profiler-with-double-quote-in-field-name.js: Added.
        * stress/type-profiler-with-double-quote-in-optional-field-name.js: Added.

2019-02-15  Robin Morisset  <rmorisset@apple.com>
        CodeBlock::jettison should clear related watchpoints
        https://bugs.webkit.org/show_bug.cgi?id=194544

        Reviewed by Mark Lam.

        * stress/regexp-replace-double-watchpoint.js: Added.
        (foo):

2019-02-15  Saam barati  <sbarati@apple.com>

        [WebAssembly] Write a new register allocator for Air O0 and make BBQ use it
        https://bugs.webkit.org/show_bug.cgi?id=194036

        Reviewed by Yusuke Suzuki.

        * stress/tail-call-many-arguments.js: Added.
        (foo):
        (bar):

2019-02-14  Saam Barati  <sbarati@apple.com>

        Cache the results of BytecodeGenerator::getVariablesUnderTDZ
        https://bugs.webkit.org/show_bug.cgi?id=194583
        <rdar://problem/48028140>

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/cache-get-variables-under-tdz-in-bytecode-generator.js: Added.

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

        [JSC] String.fromCharCode's slow path always generates 16bit string
        https://bugs.webkit.org/show_bug.cgi?id=194466

        Reviewed by Keith Miller.

        * stress/string-from-char-code-slow-path.js: Added.
        (shouldBe):
        (testWithLength):

2019-02-08  Saam barati  <sbarati@apple.com>

        Nodes that rely on being dominated by CheckInBounds should have a child edge to it
        https://bugs.webkit.org/show_bug.cgi?id=194334
        <rdar://problem/47844327>

        Reviewed by Mark Lam.

        * stress/check-in-bounds-should-be-a-child-use.js: Added.
        (func):

2019-02-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] InitializeEntrypointArguments should produce SpecCellCheck if FlushFormat is FlushedCell
        https://bugs.webkit.org/show_bug.cgi?id=194369
        <rdar://problem/47813087>

        Reviewed by Saam Barati.

        * stress/initialize-entrypoint-arguments-with-tdz.js: Added.
        (A):

2019-02-06  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] PrivateName to PublicName hash table is wasteful
        https://bugs.webkit.org/show_bug.cgi?id=194277

        Reviewed by Michael Saboff.

        This test depends on the order of JSSegmentedVariableObjects' variables, which is not guaranteed in JSC. Skipped.

        * ChakraCore.yaml:

2019-02-05  Dominik Infuehr  <dinfuehr@igalia.com>

        [ARM] Test running out of executable memory
        https://bugs.webkit.org/show_bug.cgi?id=194285

        Unreviewed. Do no execute test with LLInt disabled, test runs out of
        executable memory otherwise.

        * stress/class-subclassing-function.js:

2019-02-04  Robin Morisset  <rmorisset@apple.com>

        when lowering AssertNotEmpty, create the value before creating the patchpoint
        https://bugs.webkit.org/show_bug.cgi?id=194231

        Reviewed by Saam Barati.

        This test is painfully fragile: it tries to test that AssertNotEmpty on a constant produces valid B3 IR.
        The problem is that AssertNotEmpty is only created by DFGConstantFolding when it can simplify a CheckStructure, and constant folding is a bit capricious (https://bugs.webkit.org/show_bug.cgi?id=133947)
        So even tiny changes to this test can change the path code taken.

        * stress/assert-not-empty.js: Added.
        (foo):

2019-02-01  Mark Lam  <mark.lam@apple.com>

        Remove invalid assertion in DFG's compileDoubleRep().
        https://bugs.webkit.org/show_bug.cgi?id=194130
        <rdar://problem/47699474>

        Reviewed by Saam Barati.

        * stress/constant-fold-double-rep-into-double-constant.js: Added.

2019-01-30  Ross Kirsling  <ross.kirsling@sony.com>

        Import latest Test262 updates.

        Rubber-stamped by Keith Miller.

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

2019-01-30  Robin Morisset  <rmorisset@apple.com>

        Object.keys can now lead to a PhantomNewArrayBuffer, OSR exit from the FTL should know how to materialize a NewArrayBuffer in that case
        https://bugs.webkit.org/show_bug.cgi?id=194050
        <rdar://problem/47595592>

        Reviewed by Yusuke Suzuki.

        * stress/object-keys-osr-exit.js: Added.
        (foo):
        (catch):

2019-01-29  Mark Lam  <mark.lam@apple.com>

        ValueRecovery::recover() should purify NaN values it recovers.
        https://bugs.webkit.org/show_bug.cgi?id=193978
        <rdar://problem/47625488>

        Reviewed by Saam Barati.

        * stress/value-recovery-of-double-displaced-in-jsstack-should-be-purified.js: Added.

2019-01-28  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, fix the test after r240543 not to use @Error / Error in builtins
        https://bugs.webkit.org/show_bug.cgi?id=193713

        * stress/try-get-by-id-should-spill-registers-dfg.js:
        (let.f.createBuiltin):

2019-01-28  Mark Lam  <mark.lam@apple.com>

        ToString node actually does GC.
        https://bugs.webkit.org/show_bug.cgi?id=193920
        <rdar://problem/46695900>

        Reviewed by Yusuke Suzuki.

        * stress/dfg-to-string-on-int-does-gc.js: Added.
        * stress/dfg-to-string-on-string-object-does-not-gc.js: Added.
        * stress/dfg-to-string-on-string-or-string-object-does-not-gc.js: Added.

2019-01-25  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] NativeErrorConstructor should not have own IsoSubspace
        https://bugs.webkit.org/show_bug.cgi?id=193713

        Reviewed by Saam Barati.

        Remove @Error use.

        * stress/try-get-by-id-should-spill-registers-dfg.js:
        (let.f.createBuiltin):

2019-01-24  Yusuke Suzuki  <ysuzuki@apple.com>

        stress/const-semantics.js fails a dfg-eager / ftl-eager run with an ASAN release build.
        https://bugs.webkit.org/show_bug.cgi?id=190693

        Reviewed by Michael Saboff.

        * stress/regress-190693.js: Added.
        (truth):
        (assert):
        (shouldThrowInvalidConstAssignment):
        (taz):

2019-01-24  Saam Barati  <sbarati@apple.com>

        Object Allocation Sinking phase can move a node that walks the stack into a place where the InlineCallFrame is no longer valid
        https://bugs.webkit.org/show_bug.cgi?id=193751
        <rdar://problem/47280215>

        Reviewed by Michael Saboff.

        * stress/object-allocation-sinking-phase-must-only-move-allocations-if-stack-trace-is-still-valid.js: Added.
        (let.thing):
        (foo.let.hello):
        (foo):

2019-01-24  Guillaume Emont  <guijemont@igalia.com>

        [JSC] Reenable baseline JIT on mips
        https://bugs.webkit.org/show_bug.cgi?id=192983

        Reviewed by Mark Lam.

        Added a new test for a case that was triggering a RELEASE_ASSERT when
        testing.
        Disable some slow tests that were already disabled for arm and x86.

        * stress/json-parse-big-object.js: Added.
        * stress/new-largeish-contiguous-array-with-size.js:
        * stress/op_add.js:
        * stress/op_bitand.js:
        * stress/op_bitor.js:
        * stress/op_bitxor.js:
        * stress/op_lshift-ConstVar.js:
        * stress/op_lshift-VarConst.js:
        * stress/op_lshift-VarVar.js:
        * stress/op_mod-ConstVar.js:
        * stress/op_mod-VarConst.js:
        * stress/op_mod-VarVar.js:
        * stress/op_mul-ConstVar.js:
        * stress/op_mul-VarConst.js:
        * stress/op_mul-VarVar.js:
        * stress/op_rshift-ConstVar.js:
        * stress/op_rshift-VarConst.js:
        * stress/op_rshift-VarVar.js:
        * stress/op_sub-ConstVar.js:
        * stress/op_sub-VarConst.js:
        * stress/op_sub-VarVar.js:
        * stress/op_urshift-ConstVar.js:
        * stress/op_urshift-VarConst.js:
        * stress/op_urshift-VarVar.js:
        * stress/sampling-profiler-richards.js:
        * stress/spread-forward-call-varargs-stack-overflow.js:

2019-01-23  Yusuke Suzuki  <ysuzuki@apple.com>

        [DFG] AvailabilityMap::pruneByLiveness should make non-live operands Availability::unavailable instead of Availability()
        https://bugs.webkit.org/show_bug.cgi?id=193711
        <rdar://problem/47250262>

        Reviewed by Saam Barati.

        * stress/availability-was-cleared-when-locals-are-not-live.js: Added.
        (shouldBe):
        (foo):
        (bar):
        (baz):

2019-01-22  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, fix initial global lexical binding epoch
        https://bugs.webkit.org/show_bug.cgi?id=193603
        <rdar://problem/47380869>

        * stress/global-lexical-binding-epoch-should-be-correct-one.js: Added.
        (f1.f2.f3.f4):
        (f1.f2.f3):
        (f1.f2):
        (f1):

2019-01-22  Yusuke Suzuki  <ysuzuki@apple.com>

        REGRESSION(r239612) Crash at runtime due to broken DFG assumption
        https://bugs.webkit.org/show_bug.cgi?id=193709
        <rdar://problem/47363838>

        Unreviewed, rollout to watch the tests.

        * stress/object-tostring-changed-proto.js: Removed.
        * stress/object-tostring-changed.js: Removed.
        * stress/object-tostring-misc.js: Removed.
        * stress/object-tostring-other.js: Removed.
        * stress/object-tostring-untyped.js: Removed.

2019-01-22  Saam Barati  <sbarati@apple.com>

        Unreviewed. Rollout r240223. It regressed JetStream2 by 1%.

        * stress/arith-abs-to-arith-negate-range-optimizaton.js:
        (testUncheckedBetweenIntMinInclusiveAndZeroExclusive):
        (testUncheckedLessThanZero):
        (testUncheckedLessThanOrEqualZero):
        * stress/movhint-backwards-propagation-must-merge-use-as-value-add.js: Removed.
        * stress/movhint-backwards-propagation-must-merge-use-as-value.js: Removed.

2019-01-22  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Invalidate old scope operations using global lexical binding epoch
        https://bugs.webkit.org/show_bug.cgi?id=193603
        <rdar://problem/47380869>

        Reviewed by Saam Barati.

        * stress/let-lexical-binding-shadow-existing-global-property-ftl.js:
        * stress/scope-operation-cache-global-property-before-deleting.js: Added.
        (shouldThrow):
        (bar):
        * stress/scope-operation-cache-global-property-bump-counter.js: Added.
        (shouldBe):
        (get1):
        (get2):
        (get1If):
        (get2If):
        * stress/scope-operation-cache-global-property-even-if-it-fails.js: Added.
        (shouldThrow):
        (foo):

2019-01-21  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, roll out r240220 due to date-format-xparb regression
        https://bugs.webkit.org/show_bug.cgi?id=193603

        * stress/let-lexical-binding-shadow-existing-global-property-ftl.js:
        * stress/scope-operation-cache-global-property-before-deleting.js: Removed.
        * stress/scope-operation-cache-global-property-bump-counter.js: Removed.
        * stress/scope-operation-cache-global-property-even-if-it-fails.js: Removed.

2019-01-21  Caio Lima  <ticaiolima@gmail.com>

        DoesGC rule is wrong for nodes with BigIntUse
        https://bugs.webkit.org/show_bug.cgi?id=193652

        Reviewed by Saam Barati.

        * stress/big-int-value-op-update-gc-rules.js: Added.
        (assert):
        (doesGCAdd):
        (doesGCSub):
        (doesGCDiv):
        (doesGCMul):
        (doesGCBitAnd):
        (doesGCBitOr):
        (doesGCBitXor):

2019-01-20  Saam Barati  <sbarati@apple.com>

        DFG: When inlining DataView set* intrinsics we need to set undefined as our result
        https://bugs.webkit.org/show_bug.cgi?id=193644
        <rdar://problem/46209745>

        Reviewed by Yusuke Suzuki.

        * stress/data-view-set-intrinsic-undefined-result-2.js: Added.
        (foo):
        * stress/data-view-set-intrinsic-undefined-result.js: Added.
        (foo):
        (bar):

2019-01-20  Saam Barati  <sbarati@apple.com>

        MovHint must merge NodeBytecodeUsesAsValue for its child
        https://bugs.webkit.org/show_bug.cgi?id=186916
        <rdar://problem/41396612>

        Reviewed by Yusuke Suzuki.

        * stress/arith-abs-to-arith-negate-range-optimizaton.js:
        * stress/movhint-backwards-propagation-must-merge-use-as-value.js: Added.

2019-01-20  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Invalidate old scope operations using global lexical binding epoch
        https://bugs.webkit.org/show_bug.cgi?id=193603
        <rdar://problem/47380869>

        Reviewed by Saam Barati.

        * stress/let-lexical-binding-shadow-existing-global-property-ftl.js:
        * stress/scope-operation-cache-global-property-before-deleting.js: Added.
        (shouldThrow):
        (bar):
        * stress/scope-operation-cache-global-property-bump-counter.js: Added.
        (shouldBe):
        (get1):
        (get2):
        (get1If):
        (get2If):
        * stress/scope-operation-cache-global-property-even-if-it-fails.js: Added.
        (shouldThrow):
        (foo):

2019-01-17  Saam barati  <sbarati@apple.com>

        StringObjectUse should not be a structure check for the original string object structure
        https://bugs.webkit.org/show_bug.cgi?id=193483
        <rdar://problem/47280522>

        Reviewed by Yusuke Suzuki.

        * stress/cant-eliminate-string-object-structure-check-when-string-object-is-proven.js: Added.
        (foo):
        (a.valueOf.0):

2019-01-17  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] ToThis omission in DFGByteCodeParser is wrong
        https://bugs.webkit.org/show_bug.cgi?id=193513
        <rdar://problem/45842236>

        Reviewed by Saam Barati.

        * stress/to-this-omission-with-different-strict-modes.js: Added.
        (thisA):
        (thisAStrictWrapper):

2019-01-15  Mark Lam  <mark.lam@apple.com>

        JSFunction::canUseAllocationProfile() should account for builtin functions with no own prototypes.
        https://bugs.webkit.org/show_bug.cgi?id=193423
        <rdar://problem/46209355>

        Reviewed by Saam Barati.

        * microbenchmarks/sinkable-new-object-with-builtin-constructor.js: Added.
        * stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-1.js: Added.
        * stress/constructing-builtin-functions-with-getter-prototype-should-only-call-getter-once-per-new-2.js: Added.
        * stress/jsfunction-cannot-use-allocation-profile-with-builtin-functions-with-no-prototype.js: Added.

2019-01-15  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Use KnownStringUse for GetByVal(Array::String) since AI would offer wider type information and offer non-string type after removing Check(String)
        https://bugs.webkit.org/show_bug.cgi?id=193438
        <rdar://problem/45581249>

        Reviewed by Saam Barati and Keith Miller.

        Under the heavy load (like, compiling WebKit), AI in this code can broaden type information after the 1st run.
        Then, GetByVal(String) crashed.

        * stress/string-get-by-val-lowering.js: Added.
        (shouldBe):
        (test):
        * stress/type-for-get-by-val-can-be-widen-after-ai.js: Added.
        (Hello):
        (foo):

2019-01-15  Tomas Popela  <tpopela@redhat.com>

        Unreviewed, skip JIT tests if it's not enabled

        * stress/bit-op-with-object-returning-int32.js:

2019-01-15  Caio Lima  <ticaiolima@gmail.com>

        DFGByteCodeParser rules for bitwise operations should consider type of their operands
        https://bugs.webkit.org/show_bug.cgi?id=192966

        Reviewed by Yusuke Suzuki.

        * stress/bit-op-with-object-returning-int32.js: Added.

2019-01-15  Guillaume Emont  <guijemont@igalia.com>

        Skip a slow test and a flakey test on arm

        Unreviewed gardening.

        * typeProfiler/getter-richards.js:
        this test always times out, it used to be always skipped on arm and
        mips, but got accidentally enabled by r237919 now that we have DFG on
        arm. Also skipping on mips as we plan to soon enable DFG for it too.

2019-01-14  Keith Miller  <keith_miller@apple.com>

        Skip type-check-hoisting-phase-hoist... with no jit
        https://bugs.webkit.org/show_bug.cgi?id=193421

        Reviewed by Mark Lam.

        It's timing out the 32-bit bots and takes 330 seconds
        on my machine when run by itself.

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

2019-01-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] AI should check the given constant's array type when folding GetByVal into constant
        https://bugs.webkit.org/show_bug.cgi?id=193413
        <rdar://problem/46092389>

        Reviewed by Keith Miller.

        This test is super flaky. It causes crash in r238109, but it does not crash with `--useConcurrentJIT=false`.
        It does not cause any crashes on the latest revision too. Basically, it highly depends on the timing, and
        without this patch, the root cause is not fixed yet. If GetLocal is turned into JSConstant in AI,
        but GetByVal does not have appropriate ArrayModes, JSC crashes.

        * stress/ai-should-perform-array-check-on-get-by-val-constant-folding.js: Added.
        (compareArray):

2019-01-14  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Literal parsing is crashing when used inside a Object Literal
        https://bugs.webkit.org/show_bug.cgi?id=193404

        Reviewed by Yusuke Suzuki.

        * stress/big-int-literal-inside-literal-object.js: Added.

2019-01-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Do not use asArrayModes() with Structures because it discards TypedArray information
        https://bugs.webkit.org/show_bug.cgi?id=193372

        Reviewed by Saam Barati.

        * stress/typed-array-array-modes-profile.js: Added.
        (foo):

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

        Fix all CLoop JSC test failures (including some LLInt bugs due to recent bytecode format change).
        https://bugs.webkit.org/show_bug.cgi?id=193402
        <rdar://problem/46012309>

        Reviewed by Keith Miller.

        * stress/regexp-compile-oom.js:
        - Skip this test for !$jitTests because it is tuned for stack usage when the JIT
          is enabled.  As a result, it will fail on cloop builds though there is no bug.

2019-01-11  Saam barati  <sbarati@apple.com>

        DFG combined liveness can be wrong for terminal basic blocks
        https://bugs.webkit.org/show_bug.cgi?id=193304
        <rdar://problem/45268632>

        Reviewed by Yusuke Suzuki.

        * stress/dfg-combined-liveness-consider-terminal-blocks-bytecode-liveness.js: Added.

2019-01-11  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Global lexical bindings can shadow global variables if it is `configurable = true`
        https://bugs.webkit.org/show_bug.cgi?id=193308
        <rdar://problem/45546542>

        Reviewed by Saam Barati.

        * stress/const-lexical-binding-shadow-existing-global-property-ftl.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        (get shouldThrow):
        * stress/const-lexical-binding-shadow-existing-global-property-tdz-ftl.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        (get shouldBe):
        (get shouldThrow):
        (get return):
        * stress/const-lexical-binding-shadow-existing-global-property-tdz.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        (get shouldBe):
        (get shouldThrow):
        * stress/const-lexical-binding-shadow-existing-global-property.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        * stress/const-lexical-binding-shadowing-global-properties-and-eval-injection.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        * stress/global-add-function-should-not-be-shadowed-by-lexical-bindings.js: Added.
        (shouldThrow):
        * stress/global-static-variables-should-not-be-shadowed-by-lexical-bindings.js: Added.
        (shouldThrow):
        * stress/let-lexical-binding-shadow-existing-global-property-ftl.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        * stress/let-lexical-binding-shadow-existing-global-property-tdz-ftl.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        (get shouldBe):
        (get shouldThrow):
        (get return):
        * stress/let-lexical-binding-shadow-existing-global-property-tdz.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        (get shouldBe):
        (get shouldThrow):
        * stress/let-lexical-binding-shadow-existing-global-property.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):
        * stress/let-lexical-binding-shadowing-global-properties-and-eval-injection.js: Added.
        (shouldThrow):
        (shouldBe):
        (foo):

2019-01-11  Dominik Infuehr  <dinfuehr@igalia.com>

        Enable DFG on ARM/Linux again
        https://bugs.webkit.org/show_bug.cgi?id=192496

        Reviewed by Yusuke Suzuki.

        Test wasn't really skipped before moving the line with skip
        to the top.

        * stress/regress-192717.js:

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

        Unreviewed, rolling out r239825.
        https://bugs.webkit.org/show_bug.cgi?id=193330

        Broke tests on armv7/linux bots (Requested by guijemont on
        #webkit).

        Reverted changeset:

        "Enable DFG on ARM/Linux again"
        https://bugs.webkit.org/show_bug.cgi?id=192496
        https://trac.webkit.org/changeset/239825

2019-01-10  Dominik Infuehr  <dinfuehr@igalia.com>

        Enable DFG on ARM/Linux again
        https://bugs.webkit.org/show_bug.cgi?id=192496

        Reviewed by Yusuke Suzuki.

        Test wasn't really skipped before moving the line with skip
        to the top.

        * stress/regress-192717.js:

2019-01-08  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Array.prototype.flat/flatMap have a minor bug in ArraySpeciesCreate
        https://bugs.webkit.org/show_bug.cgi?id=193127

        Reviewed by Saam Barati.

        * stress/array-species-create-should-handle-masquerader.js: Added.
        (shouldThrow):
        * stress/is-undefined-or-null-builtin.js: Added.
        (shouldBe):
        (isUndefinedOrNull.vm.createBuiltin):

2019-01-08  Tadeu Zagallo  <tzagallo@apple.com>

        LLInt put_by_id uses the wrong load instruction for loading flags from the metadata
        https://bugs.webkit.org/show_bug.cgi?id=193221

        Reviewed by Mark Lam.

        * stress/put-by-id-flags.js: Added.
        (f):
        (g):
        (numberOfDFGCompiles):

2019-01-04  Tadeu Zagallo  <tzagallo@apple.com>

        Baseline version of get_by_id may corrupt metadata
        https://bugs.webkit.org/show_bug.cgi?id=193085
        <rdar://problem/23453006>

        Reviewed by Saam Barati.

        * stress/get-by-id-change-mode.js: Added.
        (forEach):

2019-01-02  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Optimize Object.prototype.toString
        https://bugs.webkit.org/show_bug.cgi?id=193031

        Reviewed by Saam Barati.

        * stress/object-tostring-changed-proto.js: Added.
        (shouldBe):
        (test):
        * stress/object-tostring-changed.js: Added.
        (shouldBe):
        (test):
        * stress/object-tostring-misc.js: Added.
        (shouldBe):
        (test):
        (i.switch):
        * stress/object-tostring-other.js: Added.
        (shouldBe):
        (test):
        * stress/object-tostring-untyped.js: Added.
        (shouldBe):
        (test):
        (i.switch):

2019-01-03  Ross Kirsling  <ross.kirsling@sony.com>

        test262-runner misbehaves when test file YAML has a trailing space
        https://bugs.webkit.org/show_bug.cgi?id=193053

        Reviewed by Yusuke Suzuki.

        * test262/expectations.yaml:
        Mark two dozen tests as passing (and correct the output of another).

2018-12-30  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Unreviewed, JSTests gardening with memoryLimited

        * stress/string-overflow-createError.js:

2018-12-30  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Identifier validity should be based on ID_Start / ID_Continue properties
        https://bugs.webkit.org/show_bug.cgi?id=193050

        Reviewed by Yusuke Suzuki.

        * test262.yaml:
        * test262/expectations.yaml:
        Mark 16 tests as passing.

2018-12-13  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [BigInt] Support BigInt in JSON.stringify
        https://bugs.webkit.org/show_bug.cgi?id=192624

        Reviewed by Saam Barati.

        * stress/big-int-json-stringify-to-json.js: Added.
        (shouldBe):
        (shouldThrow):
        (BigInt.prototype.toJSON):
        (shouldBe.JSON.stringify):
        * stress/big-int-json-stringify.js: Added.
        (shouldBe):
        (shouldThrow):

2018-12-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Implement "well-formed JSON.stringify" proposal
        https://bugs.webkit.org/show_bug.cgi?id=191677

        Reviewed by Darin Adler.

        * stress/json-surrogate-pair.js: Added.
        (shouldBe):
        * test262/expectations.yaml:

2018-12-20  Keith Miller  <keith_miller@apple.com>

        Add support for globalThis
        https://bugs.webkit.org/show_bug.cgi?id=165171

        Reviewed by Mark Lam.

        * test262/config.yaml:

2018-12-19  Keith Miller  <keith_miller@apple.com>

        Update test262 configuration to not run tests dependent on ICU version.
        https://bugs.webkit.org/show_bug.cgi?id=192920

        Reviewed by Saam Barati.

        * test262/expectations.yaml:

2018-12-20  Mark Lam  <mark.lam@apple.com>

        Fix a typo in slow_path_construct_arityCheck and operationConstructArityCheck.
        https://bugs.webkit.org/show_bug.cgi?id=192939
        <rdar://problem/46869516>

        Reviewed by Keith Miller.

        * stress/stack-overflow-frame-for-construct-arityCheck-should-use-construct-codeBlock.js: Added.

2018-12-20  Tadeu Zagallo  <tzagallo@apple.com>

        WTF::String and StringImpl overflow MaxLength
        https://bugs.webkit.org/show_bug.cgi?id=192853
        <rdar://problem/45726906>

        Reviewed by Mark Lam.

        * stress/string-16bit-repeat-overflow.js: Added.
        (catch):

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

        Unreviewed follow-up to r192914.

        * test262/expectations.yaml:
        Add the last 20 missing expectations.

2018-12-19  Keith Miller  <keith_miller@apple.com>

        Fix test262 expectations
        https://bugs.webkit.org/show_bug.cgi?id=192914

        Unreviewed, when I imported the latest round of test262 tests I must have failed to update the test expectations.

        * test262/expectations.yaml:

2018-12-19  Keith Miller  <keith_miller@apple.com>

        Update test262 tests.
        https://bugs.webkit.org/show_bug.cgi?id=192907

        Rubber stamped by Mark Lam.

        * test262/*: Omitted because prepare-changelog crashes.

2018-12-19  Mark Lam  <mark.lam@apple.com>

        JSPropertyNameEnumerator should cache the iterated object's structure only after getting its property names.
        https://bugs.webkit.org/show_bug.cgi?id=192464
        <rdar://problem/46519455>

        Reviewed by Saam Barati.

        This patch is about a 10% speed up on the new for-in-on-object-with-lazily-materialized-properties.js
        microbenchmark.

        * microbenchmarks/for-in-on-object-with-lazily-materialized-properties.js: Added.
        * stress/property-name-enumerator-should-cache-structure-after-getting-property-names.js: Added.

2018-12-19  Tadeu Zagallo  <tzagallo@apple.com>

        String overflow in JSC::createError results in ASSERT in WTF::makeString
        https://bugs.webkit.org/show_bug.cgi?id=192833
        <rdar://problem/45706868>

        Reviewed by Mark Lam.

        * stress/string-overflow-createError.js: Added.

2018-12-18  Ross Kirsling  <ross.kirsling@sony.com>

        Error message for `-x ** y` contains a typo.
        https://bugs.webkit.org/show_bug.cgi?id=192832

        Reviewed by Saam Barati.

        * ChakraCore/test/UnitTestFramework/UnitTestFramework.js:
        (assert.assert.return.throws):
        * stress/pow-expects-update-expression-on-lhs.js:
        (throw.new.Error):
        Update test expectations which match against the exact error message.

2018-12-18  Mark Lam  <mark.lam@apple.com>

        Gardening: test options fix.
        https://bugs.webkit.org/show_bug.cgi?id=192822

        Unreviewed.

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

2018-12-18  Mark Lam  <mark.lam@apple.com>

        JSON.stringify() should throw OOM on StringBuilder overflows.
        https://bugs.webkit.org/show_bug.cgi?id=192822
        <rdar://problem/46670577>

        Reviewed by Saam Barati.

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

2018-12-18  Ross Kirsling  <ross.kirsling@sony.com>

        Redeclaration of var over let/const/class should be a syntax error.
        https://bugs.webkit.org/show_bug.cgi?id=192298

        Reviewed by Keith Miller.

        * test262.yaml:
        * test262/expectations.yaml:
        Mark 46 tests as passing.

        * stress/block-scope-redeclarations.js:
        Add some new tests.

        * stress/for-in-invalidate-context-weird-assignments.js:
        * stress/for-in-tests.js:
        Replace tests for outdated behavior with tests for SyntaxError.

        * ChakraCore/test/LetConst/defer3.baseline-jsc:
        * ChakraCore/test/LetConst/letvar.baseline-jsc:
        Update expectations.

2018-12-18  Mark Lam  <mark.lam@apple.com>

        Skip the stress/elidable-new-object-roflcopter-then-exit.js test on 32-bit.
        https://bugs.webkit.org/show_bug.cgi?id=191374
        <rdar://problem/46525447>

        Reviewed by Yusuke Suzuki.

        This test runs too slow on 32-bit, and is not relevant for non-JIT builds.

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

2018-12-17  Mark Lam  <mark.lam@apple.com>

        Skip the stress/materialized-regexp-has-correct-last-index-set-by-match.js test on 32-bit.
        https://bugs.webkit.org/show_bug.cgi?id=192019
        <rdar://problem/46525456>

        Reviewed by Yusuke Suzuki.

        The test runs too slow on 32-bit.

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

2018-12-17  Mark Lam  <mark.lam@apple.com>

        Skip the stress/materialize-regexp-cyclic-regexp.js test on 32-bit.
        https://bugs.webkit.org/show_bug.cgi?id=191373
        <rdar://problem/46525458>

        Reviewed by Yusuke Suzuki.

        The test is already slow running with a JIT on 64-bit.  It will always timeout
        on 32-bit without a JIT.

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

2018-12-17  Mark Lam  <mark.lam@apple.com>

        Array unshift/shift should not race against the AI in the compiler thread.
        https://bugs.webkit.org/show_bug.cgi?id=192795
        <rdar://problem/46724263>

        Reviewed by Saam Barati.

        * stress/array-unshift-should-not-race-against-compiler-thread.js: Added.

2018-12-16  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Optimize Object.keys by caching own keys results in StructureRareData
        https://bugs.webkit.org/show_bug.cgi?id=190047

        Reviewed by Saam Barati.

        * stress/object-keys-cached-zero.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-changed-attribute.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-changed-index.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-changed.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-indexed-non-cache.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-overrides-get-property-names.js: Added.
        (shouldBe):
        (test):
        (noInline):

2018-12-17  Mark Lam  <mark.lam@apple.com>

        SamplingProfiler's isValidFramePointer() should reject address at stack origin.
        https://bugs.webkit.org/show_bug.cgi?id=192779
        <rdar://problem/46775869>

        Reviewed by Saam Barati.

        * stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js: Added.

2018-12-17  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed test gardening, address a syntax error in a new test.

        * stress/out-of-frame-stack-accesses-due-to-probe-based-osr-exits.js:

2018-12-17  Mark Lam  <mark.lam@apple.com>

        Suppress ASAN on valid stack accesses in Probe-based OSRExit::executeOSRExit().
        https://bugs.webkit.org/show_bug.cgi?id=192776
        <rdar://problem/46772368>

        Reviewed by Keith Miller.

        * stress/out-of-frame-stack-accesses-due-to-probe-based-osr-exits.js: Added.

2018-12-17  Mark Lam  <mark.lam@apple.com>

        Fix stale assertion in attemptToForceStringArrayModeByToStringConversion().
        https://bugs.webkit.org/show_bug.cgi?id=192770
        <rdar://problem/46449037>

        Reviewed by Keith Miller.

        * stress/force-string-arrayMode-on-originalNonArray-array-class.js: Added.

2018-12-14  Mark Lam  <mark.lam@apple.com>

        CallFrame::convertToStackOverflowFrame() needs to keep the top CodeBlock alive.
        https://bugs.webkit.org/show_bug.cgi?id=192717
        <rdar://problem/46660677>

        Reviewed by Saam Barati.

        * stress/regress-192717.js: Added.

2018-12-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r239153, r239154, and r239155.
        https://bugs.webkit.org/show_bug.cgi?id=192715

        Caused flaky GC-related crashes seen with layout tests
        (Requested by ryanhaddad on #webkit).

        Reverted changesets:

        "[JSC] Optimize Object.keys by caching own keys results in
        StructureRareData"
        https://bugs.webkit.org/show_bug.cgi?id=190047
        https://trac.webkit.org/changeset/239153

        "Unreviewed, build fix after r239153"
        https://bugs.webkit.org/show_bug.cgi?id=190047
        https://trac.webkit.org/changeset/239154

        "Unreviewed, build fix after r239153, part 2"
        https://bugs.webkit.org/show_bug.cgi?id=190047
        https://trac.webkit.org/changeset/239155

2018-12-14  Keith Miller  <keith_miller@apple.com>

        Callers of JSString::getIndex should check for OOM exceptions
        https://bugs.webkit.org/show_bug.cgi?id=192709

        Reviewed by Mark Lam.

        * stress/StringObject-define-length-getter-rope-string-oom.js: Added.

2018-12-13  Mark Lam  <mark.lam@apple.com>

        Add a missing exception check.
        https://bugs.webkit.org/show_bug.cgi?id=192626
        <rdar://problem/46662163>

        Reviewed by Keith Miller.

        * stress/regress-192626.js: Added.

2018-12-13  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueDiv into DFG
        https://bugs.webkit.org/show_bug.cgi?id=186178

        Reviewed by Yusuke Suzuki.

        * stress/big-int-div-jit-osr.js: Added.
        * stress/big-int-div-jit-untyped.js: Added.
        * stress/value-div-fixup-int32-big-int.js: Added.

2018-12-10  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Optimize Object.keys by caching own keys results in StructureRareData
        https://bugs.webkit.org/show_bug.cgi?id=190047

        Reviewed by Keith Miller.

        * stress/object-keys-cached-zero.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-changed-attribute.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-changed-index.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-changed.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-indexed-non-cache.js: Added.
        (shouldBe):
        (test):
        * stress/object-keys-overrides-get-property-names.js: Added.
        (shouldBe):
        (test):
        (noInline):

2018-12-12  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [DFG][FTL] Add NewSymbol
        https://bugs.webkit.org/show_bug.cgi?id=192620

        Reviewed by Saam Barati.

        * microbenchmarks/symbol-creation.js: Added.
        (test):
        * stress/symbol-description-identity.js: Added.
        (shouldBe):
        (test):
        * stress/symbol-identity.js: Added.
        (shouldBe):
        (test):
        * stress/symbol-with-description-throw-error.js: Added.
        (shouldBe):
        (shouldThrow):
        (test):
        (object.toString):

2018-12-12  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [BigInt] Implement DFG/FTL typeof for BigInt
        https://bugs.webkit.org/show_bug.cgi?id=192619

        Reviewed by Keith Miller.

        * stress/big-int-boolean-proven-type.js: Added.
        (assert):
        (bool):
        * stress/big-int-type-of-proven-type-non-constant-including-symbol.js: Added.
        (assert):
        (typeOf):
        (i.switch):
        * stress/big-int-type-of-proven-type-non-constant.js: Added.
        (assert):
        (typeOf):
        * stress/big-int-type-of.js:
        (typeOf):
        (func):

2018-12-10  Mark Lam  <mark.lam@apple.com>

        PropertyAttribute needs a CustomValue bit.
        https://bugs.webkit.org/show_bug.cgi?id=191993
        <rdar://problem/46264467>

        Reviewed by Saam Barati.

        * stress/regress-191993.js: Added.

2018-12-10  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueMul into DFG
        https://bugs.webkit.org/show_bug.cgi?id=186175

        Reviewed by Yusuke Suzuki.

        * stress/big-int-mul-jit-osr.js: Added.
        * stress/big-int-mul-jit-untyped.js: Added.
        * stress/value-mul-fixup-int32-big-int.js: Added.

2018-12-06  Keith Miller  <keith_miller@apple.com>

        stress/big-wasm-memory tests failing on 32-bit JSC bot
        https://bugs.webkit.org/show_bug.cgi?id=192020

        Reviewed by Saam Barati.

        Not every platform has WebAssembly, e.g. 32-bit, so we should exit
        the wasm stress tests if the WebAssembly object does not exist.

        * stress/big-wasm-memory-grow-no-max.js:
        (test.foo):
        (test):
        (foo): Deleted.
        (catch): Deleted.
        * stress/big-wasm-memory-grow.js:
        (test.foo):
        (test):
        (foo): Deleted.
        (catch): Deleted.
        * stress/big-wasm-memory.js:
        (test.foo):
        (test):
        (foo): Deleted.
        (catch): Deleted.

2018-12-05  Mark Lam  <mark.lam@apple.com>

        speculationFromCell() should speculate non-Identifier strings as SpecString instead of SpecStringVar.
        https://bugs.webkit.org/show_bug.cgi?id=192441
        <rdar://problem/46480355>

        Reviewed by Saam Barati.

        * stress/regress-192441.js: Added.

2018-12-04  Mark Lam  <mark.lam@apple.com>

        DFG's StrengthReduction phase should not reduce Construct into DirectContruct when the executable does not have constructAbility.
        https://bugs.webkit.org/show_bug.cgi?id=192386
        <rdar://problem/46445516>

        Reviewed by Saam Barati.

        * stress/regress-192386.js: Added.

2018-12-04  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Support logic operations
        https://bugs.webkit.org/show_bug.cgi?id=179903

        Reviewed by Yusuke Suzuki.

        * stress/big-int-branch-usage.js: Added.
        * stress/big-int-logical-and.js: Added.
        * stress/big-int-logical-not.js: Added.
        * stress/big-int-logical-or.js: Added.

2018-12-03  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238833.

        Breaks macOS and iOS debug builds.

        Reverted changeset:

        "[ESNext][BigInt] Support logic operations"
        https://bugs.webkit.org/show_bug.cgi?id=179903
        https://trac.webkit.org/changeset/238833

2018-12-03  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Support logic operations
        https://bugs.webkit.org/show_bug.cgi?id=179903

        Reviewed by Yusuke Suzuki.

        * stress/big-int-branch-usage.js: Added.
        * stress/big-int-logical-and.js: Added.
        * stress/big-int-logical-not.js: Added.
        * stress/big-int-logical-or.js: Added.

2018-12-02  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement support for "<<" and ">>"
        https://bugs.webkit.org/show_bug.cgi?id=186233

        Reviewed by Yusuke Suzuki.

        * stress/big-int-left-shift-general.js: Added.
        * stress/big-int-left-shift-range-error.js: Added.
        * stress/big-int-left-shift-type-error.js: Added.
        * stress/big-int-left-shift-wrapped-value.js: Added.
        * stress/big-int-right-shift-general.js: Added.
        * stress/big-int-right-shift-type-error.js: Added.
        * stress/big-int-right-shift-wrapped-value.js: Added.
        * stress/left-shift-to-primitive-precedence.js: Added.
        * stress/right-shift-to-primitive-precedence.js: Added.

2018-11-30  Dean Jackson  <dino@apple.com>

        Add first-class support for .mjs files in jsc binary
        https://bugs.webkit.org/show_bug.cgi?id=192190
        <rdar://problem/46375715>

        Reviewed by Keith Miller.

        * stress/simple-module.mjs: Added.
        * stress/simple-script.js: Added.

2018-11-30  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Implement ValueBitXor into DFG
        https://bugs.webkit.org/show_bug.cgi?id=190264

        Reviewed by Yusuke Suzuki.

        * stress/big-int-bitwise-xor-jit.js: Added.
        * stress/big-int-bitwise-xor-memory-stress.js: Added.
        * stress/big-int-bitwise-xor-untyped.js: Added.

2018-11-27  Saam barati  <sbarati@apple.com>

        r238510 broke scopes of size zero
        https://bugs.webkit.org/show_bug.cgi?id=192033
        <rdar://problem/46281734>

        Reviewed by Keith Miller.

        * stress/r238510-bad-loop.js: Added.
        (foo):

2018-11-27  Mark Lam  <mark.lam@apple.com>

        [Re-landing] NaNs read from Wasm code needs to be be purified.
        https://bugs.webkit.org/show_bug.cgi?id=191056
        <rdar://problem/45660341>

        Reviewed by Filip Pizlo.

        * wasm/regress/regress-191056.js: Added.

2018-11-27  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238509.

        Causes JSC tests to fail on iOS.

        Reverted changeset:

        "NaNs read from Wasm code needs to be be purified."
        https://bugs.webkit.org/show_bug.cgi?id=191056
        https://trac.webkit.org/changeset/238509

2018-11-26  Caio Lima  <ticaiolima@gmail.com>

        Re-introduce op_bitnot
        https://bugs.webkit.org/show_bug.cgi?id=190923

        Reviewed by Yusuke Suzuki.

        * stress/bit-not-must-generate.js: Added.
        * stress/bitwise-not-no-int32.js: Added.

2018-11-26  Saam barati  <sbarati@apple.com>

        InPlaceAbstractState::endBasicBlock rule for SetLocal should filter the value based on the flush format
        https://bugs.webkit.org/show_bug.cgi?id=191956
        <rdar://problem/45665806>

        Reviewed by Yusuke Suzuki.

        * stress/end-basic-block-set-local-should-filter-type.js: Added.
        (bar):
        (foo):

2018-11-26  Saam barati  <sbarati@apple.com>

        Object allocation sinking phase needs to iterate each scope offset instead of just iterating the symbol table's hashmap when handling an activation
        https://bugs.webkit.org/show_bug.cgi?id=191958
        <rdar://problem/46221877>

        Reviewed by Yusuke Suzuki.

        * stress/object-allocation-sinking-phase-needs-to-write-to-each-scope-offset.js: Added.
        (x):
        (foo):

2018-11-26  Mark Lam  <mark.lam@apple.com>

        NaNs read from Wasm code needs to be be purified.
        https://bugs.webkit.org/show_bug.cgi?id=191056
        <rdar://problem/45660341>

        Reviewed by Filip Pizlo.

        * wasm/regress/regress-191056.js: Added.

2018-11-26  Michael Saboff  <msaboff@apple.com>

        32-bit JSC test failure: stress/regexp-compile-oom.js
        https://bugs.webkit.org/show_bug.cgi?id=191375

        Reviewed by Mark Lam.

        Disabled the test for 32 bit platforms.

        * stress/regexp-compile-oom.js:

2018-11-26  Tadeu Zagallo  <tzagallo@apple.com>

        ASSERTION FAILED: m_outOfLineJumpTargets.contains(bytecodeOffset)
        https://bugs.webkit.org/show_bug.cgi?id=191716
        <rdar://problem/45723878>

        Reviewed by Saam Barati.

        * stress/regress-187373.js: Added.
        (async.fn):

2018-11-21  Saam barati  <sbarati@apple.com>

        DFGSpeculativeJIT should not &= exitOK with mayExit(node)
        https://bugs.webkit.org/show_bug.cgi?id=191897
        <rdar://problem/45871998>

        Reviewed by Mark Lam.

        * stress/exitok-is-not-the-same-as-mayExit.js: Added.
        (bar):
        (foo):

2018-11-21  Saam barati  <sbarati@apple.com>

        Fix assertion in KnownCellUse inside SpeculativeJIT::speculate
        https://bugs.webkit.org/show_bug.cgi?id=191895
        <rdar://problem/46167406>

        Reviewed by Mark Lam.

        * stress/known-cell-use-needs-type-check-assertion.js: Added.
        (foo):
        (bar):

2018-11-21  Mark Lam  <mark.lam@apple.com>

        Creating a wasm memory that is bigger than the ArrayBuffer limit but smaller than the spec limit should throw OOME not RangeError.
        https://bugs.webkit.org/show_bug.cgi?id=191776
        <rdar://problem/46152851>

        Reviewed by Saam Barati.

        * stress/big-wasm-memory-grow-no-max.js:
        * stress/big-wasm-memory-grow.js:
        * stress/big-wasm-memory.js:
        - updated these to expect an OutOfMemoryError.

        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE-2.js: Added.
        (Binary.prototype.emit_u8):
        (Binary.prototype.emit_u32v):
        (Binary.prototype.emit_header):
        (Binary.prototype.emit_section):
        (Binary):
        (WasmModuleBuilder):
        (WasmModuleBuilder.prototype.addMemory):
        (WasmModuleBuilder.prototype.toArray):
        (WasmModuleBuilder.prototype.toBuffer):
        (WasmModuleBuilder.prototype.instantiate):
        (catch):
        * wasm/regress/wasm-memory-requested-more-than-MAX_ARRAY_BUFFER_SIZE.js: Added.
        (catch):

2018-11-21  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] JSBigInt::createWithLength should throw when length is greater than JSBigInt::maxLength
        https://bugs.webkit.org/show_bug.cgi?id=190836

        Reviewed by Saam Barati and Yusuke Suzuki.

        * stress/big-int-out-of-memory-tests.js: Added.

2018-11-20  Mark Lam  <mark.lam@apple.com>

        Remove invalid assertion in VMTraps::SignalSender's SignalAction.
        https://bugs.webkit.org/show_bug.cgi?id=191856
        <rdar://problem/46089992>

        Reviewed by Yusuke Suzuki.

        * stress/regress-191856.js: Added.
        - this test is skipped for now until we have a fix for webkit.org/b/191855.

2018-11-21  Dominik Infuehr  <dinfuehr@igalia.com>

        Enable JIT on ARM/Linux
        https://bugs.webkit.org/show_bug.cgi?id=191548

        Reviewed by Yusuke Suzuki.

        Disable test on system with limited memory. Program was killed by
        the OS before the exception was thrown.

        * slowMicrobenchmarks/function-constructor-with-huge-strings.js:

2018-11-20  Saam barati  <sbarati@apple.com>

        Merging an IC variant may lead to the IC status containing overlapping structure sets
        https://bugs.webkit.org/show_bug.cgi?id=191869
        <rdar://problem/45403453>

        Reviewed by Mark Lam.

        * stress/merging-ic-variants-should-bail-if-structures-overlap.js: Added.

2018-11-19  Mark Lam  <mark.lam@apple.com>

        globalFuncImportModule() should return a promise when it clears exceptions.
        https://bugs.webkit.org/show_bug.cgi?id=191792
        <rdar://problem/46090763>

        Reviewed by Michael Saboff.

        * stress/global-import-function-should-return-a-promise-when-clearing-exceptions.js: Added.

2018-11-19  Guillaume Emont  <guijemont@igalia.com>

        Skip new memory-hungry tests on memory limited devices

        Unreviewed gardening.

        * stress/big-wasm-memory-grow-no-max.js:
        * stress/big-wasm-memory-grow.js:
        * stress/big-wasm-memory.js:

2018-11-18  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Unreviewed, rolling in the rest of r237254
        https://bugs.webkit.org/show_bug.cgi?id=190340

        * ChakraCore/test/Function/FuncBodyES5.baseline-jsc:
        * stress/function-cache-with-parameters-end-position.js: Added.
        (shouldBe):
        (shouldThrow):
        (i.anonymous):
        * stress/function-constructor-name.js: Added.
        (shouldBe):
        (GeneratorFunction):
        (AsyncFunction.async):
        (AsyncGeneratorFunction.async):
        (anonymous):
        (async.anonymous):
        * test262/expectations.yaml:

2018-11-16  Filip Pizlo  <fpizlo@apple.com>

        All users of ArrayBuffer should agree on the same max size
        https://bugs.webkit.org/show_bug.cgi?id=191771

        Reviewed by Mark Lam.

        * stress/big-wasm-memory-grow-no-max.js: Added.
        (foo):
        (catch):
        * stress/big-wasm-memory-grow.js: Added.
        (foo):
        (catch):
        * stress/big-wasm-memory.js: Added.
        (foo):
        (catch):

2018-11-16  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, make some more tests not crash my computer by only running on instance of it. These tests do not need to
        run for each JSC config since they're regression tests for runtime bugs.

        * stress/json-stringified-overflow-2.js:
        * stress/json-stringified-overflow.js:

2018-11-16  Filip Pizlo  <fpizlo@apple.com>

        Unreviewed, make some tests not crash my computer by only running on instance of it. These tests do not need to run for each JSC
        config since they're regression tests for runtime bugs.

        * stress/large-unshift-splice.js:
        * stress/regress-185888.js:

2018-11-16  Saam Barati  <sbarati@apple.com>

        KnownCellUse should also have SpecCellCheck as its type filter
        https://bugs.webkit.org/show_bug.cgi?id=191729
        <rdar://problem/45872852>

        Reviewed by Filip Pizlo.

        * stress/known-cell-type-check-should-allow-empty-value-to-flow-through.js: Added.
        (C):

2018-11-16  Tadeu Zagallo  <tzagallo@apple.com>

        Fix assertion failure on BytecodeGenerator::recordOpcode
        https://bugs.webkit.org/show_bug.cgi?id=191724
        <rdar://problem/45724395>

        Reviewed by Saam Barati.

        * stress/regress-187373-2.js: Added.
        (foo):

2018-11-15  Mark Lam  <mark.lam@apple.com>

        RegExpObject's collectMatches should not be using JSArray::push to fill in its match results.
        https://bugs.webkit.org/show_bug.cgi?id=191730
        <rdar://problem/46048517>

        Reviewed by Saam Barati.

        * stress/regress-187006.js: Removed.
          - this test is invalid because its sole purpose is to test for the non-spec
            compliant behavior that we just fixed.

        * stress/regress-191730.js: Added.

2018-11-15  Mark Lam  <mark.lam@apple.com>

        RegExp operations should not take fast patch if lastIndex is not numeric.
        https://bugs.webkit.org/show_bug.cgi?id=191731
        <rdar://problem/46017305>

        Reviewed by Saam Barati.

        * stress/regress-191731.js: Added.

2018-11-13  Saam Barati  <sbarati@apple.com>

        TypeProfileLog::processLogEntries should stash away any pending exceptions and re-apply them to the VM
        https://bugs.webkit.org/show_bug.cgi?id=191600

        Reviewed by Mark Lam.

        * stress/type-profiler-log-should-defer-pending-exceptions.js: Added.
        (foo):
        (test):
        (bar):

2018-11-13  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r238132.

        The test added with this change is timing out on Debug JSC
        bots.

        Reverted changeset:

        "[BigInt] JSBigInt::createWithLength should throw when length
        is greater than JSBigInt::maxLength"
        https://bugs.webkit.org/show_bug.cgi?id=190836
        https://trac.webkit.org/changeset/238132

2018-11-13  Mark Lam  <mark.lam@apple.com>

        Add OOM detection to StringPrototype's substituteBackreferences().
        https://bugs.webkit.org/show_bug.cgi?id=191563
        <rdar://problem/45720428>

        Reviewed by Saam Barati.

        * stress/regress-191563.js: Added.

2018-11-13  Mark Lam  <mark.lam@apple.com>

        LLIntSlowPath's llint_loop_osr and llint_replace should set the topCallFrame.
        https://bugs.webkit.org/show_bug.cgi?id=191579
        <rdar://problem/45942472>

        Reviewed by Saam Barati.

        * stress/regress-191579.js: Added.

2018-11-13  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] JSBigInt::createWithLength should throw when length is greater than JSBigInt::maxLength
        https://bugs.webkit.org/show_bug.cgi?id=190836

        Reviewed by Saam Barati.

        * stress/big-int-out-of-memory-tests.js: Added.

2018-11-08  Ross Kirsling  <ross.kirsling@sony.com>

        U+180E is no longer a whitespace character
        https://bugs.webkit.org/show_bug.cgi?id=191415

        Reviewed by Saam Barati.

        * ChakraCore/test/es5/regexSpace.baseline:
        * ChakraCore/test/es6/unicode_whitespace.js:
        Update tests to latest version.
        (See https://github.com/Microsoft/ChakraCore/commit/7c097b698de1e400286f9b957597b2a81fc6f80b.)

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

2018-11-07  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add support to BigInt into ValueAdd
        https://bugs.webkit.org/show_bug.cgi?id=186177

        Reviewed by Keith Miller.

        * stress/big-int-negate-jit.js:
        * stress/value-add-big-int-and-string.js: Added.
        * stress/value-add-big-int-prediction-propagation.js: Added.
        * stress/value-add-big-int-untyped.js: Added.

2018-11-07  Tadeu Zagallo  <tzagallo@apple.com>

        REGRESSION(r237547): Test failures on 32-bit JSC since the JIT was disabled
        https://bugs.webkit.org/show_bug.cgi?id=191184

        Reviewed by Saam Barati.

        Most tests were failing due to timeouts, since they are too slow to
        run on CLoop. The exceptions are:

        proxy-get-set-correct-receiver.js: Had to reduce the recursion depth not to overflow on CLoop
        dont-crash-on-stack-overflow-when-parsing-builtin.js and
        dont-crash-on-stack-overflow-when-parsing-default-constructor.js: had
        to change the stack size since CLoop requires it to be page aligned.

        * microbenchmarks/array-push-1.js:
        * microbenchmarks/array-push-2.js:
        * microbenchmarks/elidable-new-object-dag.js:
        * microbenchmarks/elidable-new-object-roflcopter.js:
        * microbenchmarks/elidable-new-object-tree.js:
        * microbenchmarks/getter-richards.js:
        * microbenchmarks/sinkable-new-object-dag.js:
        * microbenchmarks/string-concat-long-convert.js:
        * microbenchmarks/typed-array-get-set-by-val-profiling.js:
        * slowMicrobenchmarks/array-push-3.js:
        * slowMicrobenchmarks/large-map-iteration-with-additions.js:
        * slowMicrobenchmarks/spread-small-array.js:
        * slowMicrobenchmarks/undefined-property-access.js:
        * stress/activation-sink-default-value-tdz-error.js:
        * stress/activation-sink-default-value.js:
        * stress/activation-sink-osrexit-default-value-tdz-error.js:
        * stress/activation-sink-osrexit-default-value.js:
        * stress/activation-sink-osrexit.js:
        * stress/activation-sink.js:
        * stress/allow-math-ic-b3-code-duplication.js:
        * stress/array-push-multiple-int32.js:
        * stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js:
        * stress/arrowfunction-lexical-this-activation-sink-osrexit.js:
        * stress/arrowfunction-lexical-this-activation-sink.js:
        * stress/dont-crash-on-stack-overflow-when-parsing-builtin.js:
        * stress/dont-crash-on-stack-overflow-when-parsing-default-constructor.js:
        * stress/elide-new-object-dag-then-exit.js:
        * stress/materialize-regexp-cyclic.js:
        * stress/new-regex-inline.js:
        * stress/op_add.js:
        * stress/op_bitand.js:
        * stress/op_bitor.js:
        * stress/op_bitxor.js:
        * stress/op_div-ConstVar.js:
        * stress/op_div-VarConst.js:
        * stress/op_div-VarVar.js:
        * stress/op_lshift-ConstVar.js:
        * stress/op_lshift-VarConst.js:
        * stress/op_lshift-VarVar.js:
        * stress/op_mod-ConstVar.js:
        * stress/op_mod-VarConst.js:
        * stress/op_mod-VarVar.js:
        * stress/op_mul-ConstVar.js:
        * stress/op_mul-VarConst.js:
        * stress/op_mul-VarVar.js:
        * stress/op_rshift-ConstVar.js:
        * stress/op_rshift-VarConst.js:
        * stress/op_rshift-VarVar.js:
        * stress/op_sub-ConstVar.js:
        * stress/op_sub-VarConst.js:
        * stress/op_sub-VarVar.js:
        * stress/op_urshift-ConstVar.js:
        * stress/op_urshift-VarConst.js:
        * stress/op_urshift-VarVar.js:
        * stress/proxy-get-set-correct-receiver.js:
        * stress/regress-179562.js:
        * stress/rest-parameter-many-arguments.js:
        * stress/sampling-profiler-richards.js:
        * stress/splay-flash-access-1ms.js:
        * stress/tailCallForwardArguments.js:
        * stress/typed-array-get-by-val-profiling.js:
        * typeProfiler/getter-richards.js:

2018-11-06  Michael Saboff  <msaboff@apple.com>

        Multiple stress/regexp-compile-oom.js tests are failing on High Sierra Debug and Release JSC testers.
        https://bugs.webkit.org/show_bug.cgi?id=191271

        Reviewed by Saam Barati.

        Added more test cases and made all test cases run with the same deeply recursive stack
        instead of finding that same point for each test case.

        * stress/regexp-compile-oom.js:
        (prototype.runTest):
        (recurseAndTest):
        (testList.push.new.TestAndExpectedException):

2018-11-05  Michael Saboff  <msaboff@apple.com>

        Unreviewed build fix for linux.

        * stress/regexp-compile-oom.js: Disabled for non-darwin OSes.

2018-11-02  Michael Saboff  <msaboff@apple.com>

        Rolling in r237753 with unreviewed build fix.

        Fixed issues with DECLARE_THROW_SCOPE placement.

2018-11-02  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r237753.

        Introduced JSC test failures

        Reverted changeset:

        "Running out of stack space not properly handled in
        RegExp::compile() and its callers"
        https://bugs.webkit.org/show_bug.cgi?id=191206
        https://trac.webkit.org/changeset/237753

2018-11-02  Michael Saboff  <msaboff@apple.com>

        Running out of stack space not properly handled in RegExp::compile() and its callers
        https://bugs.webkit.org/show_bug.cgi?id=191206

        Reviewed by Filip Pizlo.

        New regression test.

        * stress/regexp-compile-oom.js: Added.
        (recurseAndTest):

2018-11-01  Guillaume Emont  <guijemont@igalia.com>

        Skip tests on arm/mips that time out now we're running on CLoop

        Unreviewed gardening.

        Since the JIT is temporarily disabled on 32-bit platforms, these tests
        time out on the bots and need to be disabled. There's more tests
        disabled on arm because the timeout is longer on the mips bot (as the
        device is slower to start with), so many of the tests don't time out
        there.

        * microbenchmarks/getter-richards.js: disable on arm and mips.
        * stress/op_add.js: disable on arm.
        * stress/op_bitand.js: disable on arm.
        * stress/op_bitor.js: disable on arm.
        * stress/op_bitxor.js: disable on arm.
        * stress/op_lshift-ConstVar.js: disable on arm.
        * stress/op_lshift-VarConst.js: disable on arm.
        * stress/op_lshift-VarVar.js: disable on arm.
        * stress/op_mod-ConstVar.js: disable on arm.
        * stress/op_mod-VarConst.js: disable on arm.
        * stress/op_mod-VarVar.js: disable on arm.
        * stress/op_mul-ConstVar.js: disable on arm.
        * stress/op_mul-VarConst.js: disable on arm.
        * stress/op_mul-VarVar.js: disable on arm.
        * stress/op_rshift-ConstVar.js: disable on arm.
        * stress/op_rshift-VarConst.js: disable on arm.
        * stress/op_rshift-VarVar.js: disable on arm.
        * stress/op_sub-ConstVar.js: disable on arm.
        * stress/op_sub-VarConst.js: disable on arm.
        * stress/op_sub-VarVar.js: disable on arm.
        * stress/op_urshift-ConstVar.js: disable on arm.
        * stress/op_urshift-VarConst.js: disable on arm.
        * stress/op_urshift-VarVar.js: disable on arm.
        * stress/spread-forward-call-varargs-stack-overflow.js: disable on arm.
        * stress/value-to-boolean.js: disable on arm and mips.

2018-10-31  Tadeu Zagallo  <tzagallo@apple.com>

        REGRESSION(r237547): Exception handlers should be aware of wide opcodes
        https://bugs.webkit.org/show_bug.cgi?id=191108
        <rdar://problem/45690700>

        Reviewed by Saam Barati.

        * stress/wide-op_catch.js: Added.
        (catch):

2018-10-29  Mark Lam  <mark.lam@apple.com>

        Correctly detect string overflow when using the 'Function' constructor.
        https://bugs.webkit.org/show_bug.cgi?id=184883
        <rdar://problem/36320331>

        Reviewed by Saam Barati.

        I've verified that this passes on 32-bit as well.

        * slowMicrobenchmarks/function-constructor-with-huge-strings.js: Added.

2018-10-29  Tadeu Zagallo  <tzagallo@apple.com>

        Add support for GetStack FlushedDouble
        https://bugs.webkit.org/show_bug.cgi?id=191012
        <rdar://problem/45265141>

        Reviewed by Saam Barati.

        * stress/get-stack-double.js: Added.
        (bar):
        (noInline):

2018-10-29  Tadeu Zagallo  <tzagallo@apple.com>

        New bytecode format for JSC
        https://bugs.webkit.org/show_bug.cgi?id=187373
        <rdar://problem/44186758>

        Reviewed by Filip Pizlo.

        Add tests to ensure that the inferred inline capacity for a narrow op_new_object will be capped at 255.

        * stress/maximum-inline-capacity.js: Added.
        (test1):
        (test3.Foo):
        (test3):

2018-10-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237479 and r237484.
        https://bugs.webkit.org/show_bug.cgi?id=190978

        broke JSC on iOS (Requested by tadeuzagallo on #webkit).

        Reverted changesets:

        "New bytecode format for JSC"
        https://bugs.webkit.org/show_bug.cgi?id=187373
        https://trac.webkit.org/changeset/237479

        "Gardening: Build fix after r237479."
        https://bugs.webkit.org/show_bug.cgi?id=187373
        https://trac.webkit.org/changeset/237484

2018-10-26  Tadeu Zagallo  <tzagallo@apple.com>

        New bytecode format for JSC
        https://bugs.webkit.org/show_bug.cgi?id=187373
        <rdar://problem/44186758>

        Reviewed by Filip Pizlo.

        Add tests to ensure that the inferred inline capacity for a narrow op_new_object will be capped at 255.

        * stress/maximum-inline-capacity.js: Added.
        (test1):
        (test3.Foo):
        (test3):

2018-10-26  Mark Lam  <mark.lam@apple.com>

        Fix missing edge cases with JSGlobalObjects having a bad time.
        https://bugs.webkit.org/show_bug.cgi?id=189028
        <rdar://problem/45204939>

        Reviewed by Saam Barati.

        * stress/regress-189028.js: Added.

2018-10-22  Mark Lam  <mark.lam@apple.com>

        DFGAbstractValue::m_arrayModes expects IndexingMode values, not IndexingType.
        https://bugs.webkit.org/show_bug.cgi?id=190515
        <rdar://problem/45222379>

        Rubber-stamped by Saam Barati.

        Adding another test.

        * stress/regress-190515-2.js: Added.

2018-10-22  Mark Lam  <mark.lam@apple.com>

        DFGAbstractValue::m_arrayModes expects IndexingMode values, not IndexingType.
        https://bugs.webkit.org/show_bug.cgi?id=190515
        <rdar://problem/45222379>

        Reviewed by Saam Barati.

        * stress/regress-190515.js: Added.

2018-10-19  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237254.
        https://bugs.webkit.org/show_bug.cgi?id=190760

        "It regresses JetStream 2 by 5% on some iOS devices"
        (Requested by saamyjoon on #webkit).

        Reverted changeset:

        "[JSC] JSC should have "parseFunction" to optimize Function
        constructor"
        https://bugs.webkit.org/show_bug.cgi?id=190340
        https://trac.webkit.org/changeset/237254

2018-10-19  Saam Barati  <sbarati@apple.com>

        vmCall should check if we exit before emitting an OSR exit due to exceptions
        https://bugs.webkit.org/show_bug.cgi?id=190740
        <rdar://problem/45220139>

        Reviewed by Mark Lam.

        * stress/dont-emit-osr-exits-for-every-call-ftl.js: Added.
        (foo):

2018-10-19  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement support for "^"
        https://bugs.webkit.org/show_bug.cgi?id=186235

        Reviewed by Yusuke Suzuki.

        * stress/big-int-bitwise-xor-general.js: Added.
        * stress/big-int-bitwise-xor-to-primitive-precedence.js: Added.
        * stress/big-int-bitwise-xor-type-error.js: Added.
        * stress/big-int-bitwise-xor-wrapped-value.js: Added.

2018-10-19  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueSub into DFG
        https://bugs.webkit.org/show_bug.cgi?id=186176

        Reviewed by Yusuke Suzuki.

        * stress/big-int-subtraction-jit.js:
        * stress/value-sub-big-int-prediction-propagation.js: Added.
        * stress/value-sub-big-int-untyped.js: Added.
        * stress/value-sub-spec-none-case.js: Added.

2018-10-18  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] JSC should have "parseFunction" to optimize Function constructor
        https://bugs.webkit.org/show_bug.cgi?id=190340

        Reviewed by Mark Lam.

        This patch fixes the line number of syntax errors raised by the Function constructor,
        since we now parse the final code only once. And we no longer use block statement
        for Function constructor's parsing.

        * ChakraCore/test/Function/FuncBodyES5.baseline-jsc:
        * stress/function-cache-with-parameters-end-position.js: Added.
        (shouldBe):
        (shouldThrow):
        (i.anonymous):
        * stress/function-constructor-name.js: Added.
        (shouldBe):
        (GeneratorFunction):
        (AsyncFunction.async):
        (AsyncGeneratorFunction.async):
        (anonymous):
        (async.anonymous):
        * test262/expectations.yaml:

2018-10-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237242.
        https://bugs.webkit.org/show_bug.cgi?id=190701

        it breaks "stress/sampling-profiler-basic.js" (Requested by
        caiolima on #webkit).

        Reverted changeset:

        "[BigInt] Add ValueSub into DFG"
        https://bugs.webkit.org/show_bug.cgi?id=186176
        https://trac.webkit.org/changeset/237242

2018-10-17  Keith Miller  <keith_miller@apple.com>

        AI does not clear Phantom allocation nodes.
        https://bugs.webkit.org/show_bug.cgi?id=190694

        Reviewed by Saam Barati.

        * stress/ftl-ai-filter-phantoms-should-clear-clear-value.js: Added.
        (Day):
        (DaysInYear):
        (TimeInYear):
        (TimeFromYear):
        (DayFromYear):
        (InLeapYear):
        (YearFromTime):
        (WeekDay):
        (DaylightSavingTA):
        (GetSecondSundayInMarch):
        (TimeInMonth):

2018-10-17  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] Add ValueSub into DFG
        https://bugs.webkit.org/show_bug.cgi?id=186176

        Reviewed by Yusuke Suzuki.

        * stress/big-int-subtraction-jit.js:
        * stress/value-sub-big-int-prediction-propagation.js: Added.
        * stress/value-sub-big-int-untyped.js: Added.

2018-10-16  Dominik Infuehr  <dinfuehr@igalia.com>

        [JSC] stress/array-prototype-concat-of-long-spliced-arrays2.js times out on arm and mips
        https://bugs.webkit.org/show_bug.cgi?id=190611

        Reviewed by Saam Barati.

        Reduce array length just like in array-prototype-concat-of-long-spliced-arrays.js
        to improve test runtime. On ARM/MIPS this test even timed out when running all
        tests.

        * stress/array-prototype-concat-of-long-spliced-arrays2.js:
        (test):

2018-10-15  Guillaume Emont  <guijemont@igalia.com>

        Skip stress/array-prototype-concat-of-long-spliced-arrays2.js on arm and mips/linux

        Unreviewed gardening.

        * stress/array-prototype-concat-of-long-spliced-arrays2.js:

2018-10-15  Saam barati  <sbarati@apple.com>

        Emit fjcvtzs on ARM64E on Darwin
        https://bugs.webkit.org/show_bug.cgi?id=184023

        Reviewed by Yusuke Suzuki and Filip Pizlo.

        * stress/double-to-int32-NaN.js: Added.
        (assert):
        (foo):

2018-10-15  Saam Barati  <sbarati@apple.com>

        JSArray::shiftCountWithArrayStorage is wrong when an array has holes
        https://bugs.webkit.org/show_bug.cgi?id=190262
        <rdar://problem/44986241>

        Reviewed by Mark Lam.

        * stress/array-prototype-concat-of-long-spliced-arrays.js:
        (test):
        * stress/slice-array-storage-with-holes.js: Added.
        (main):

2018-10-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237054.
        https://bugs.webkit.org/show_bug.cgi?id=190593

        "this regressed JetStream 2 by 6% on iOS" (Requested by
        saamyjoon on #webkit).

        Reverted changeset:

        "[JSC] JSC should have "parseFunction" to optimize Function
        constructor"
        https://bugs.webkit.org/show_bug.cgi?id=190340
        https://trac.webkit.org/changeset/237054

2018-10-13  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] JSON.stringify can accept call-with-no-arguments
        https://bugs.webkit.org/show_bug.cgi?id=190343

        Reviewed by Mark Lam.

        * stress/json-stringify-no-arguments.js: Added.
        (shouldBe):

2018-10-08  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] JSC should have "parseFunction" to optimize Function constructor
        https://bugs.webkit.org/show_bug.cgi?id=190340

        Reviewed by Mark Lam.

        This patch fixes the line number of syntax errors raised by the Function constructor,
        since we now parse the final code only once. And we no longer use block statement
        for Function constructor's parsing.

        * ChakraCore/test/Function/FuncBodyES5.baseline-jsc:
        * stress/function-cache-with-parameters-end-position.js: Added.
        (shouldBe):
        (shouldThrow):
        (i.anonymous):
        * stress/function-constructor-name.js: Added.
        (shouldBe):
        (GeneratorFunction):
        (AsyncFunction.async):
        (AsyncGeneratorFunction.async):
        (anonymous):
        (async.anonymous):
        * test262/expectations.yaml:

2018-10-10  Guillaume Emont  <guijemont@igalia.com>

        Skip JSC test stress/sampling-profiler-richards.js on armv7/linux
        https://bugs.webkit.org/show_bug.cgi?id=190426

        Unreviewed gardening.

        * stress/sampling-profiler-richards.js:

2018-10-06  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement support for "|"
        https://bugs.webkit.org/show_bug.cgi?id=186229

        Reviewed by Yusuke Suzuki.

        * stress/big-int-bitwise-and-jit.js:
        * stress/big-int-bitwise-or-general.js: Added.
        * stress/big-int-bitwise-or-jit-untyped.js: Added.
        * stress/big-int-bitwise-or-jit.js: Added.
        * stress/big-int-bitwise-or-memory-stress.js: Added.
        * stress/big-int-bitwise-or-to-primitive-precedence.js: Added.
        * stress/big-int-bitwise-or-type-error.js: Added.
        * stress/big-int-bitwise-or-wrapped-value.js: Added.

2018-10-05  Dominik Infuehr  <dominik.infuehr@gmail.com>

        Skip test on systems with limited memory
        https://bugs.webkit.org/show_bug.cgi?id=190310

        Invoking runDefault adds test to runlist, skipping the test in the next
        line does not prevent the test from executing. Change order of lines such
        that runDefault is only executed if test is not executed.

        Reviewed by Mark Lam.

        * stress/regress-190187.js:

2018-10-03  Saam barati  <sbarati@apple.com>

        lowXYZ in FTLLower should always filter the type of the incoming edge
        https://bugs.webkit.org/show_bug.cgi?id=189939
        <rdar://problem/44407030>

        Reviewed by Michael Saboff.

        * stress/ftl-should-always-filter-for-low-type-check-functions.js: Added.
        (foo):
        (test):

2018-10-03  Mark Lam  <mark.lam@apple.com>

        Make string MaxLength for all WTF and JS strings consistently equal to INT_MAX.
        https://bugs.webkit.org/show_bug.cgi?id=190187
        <rdar://problem/42512909>

        Reviewed by Michael Saboff.

        * stress/regress-190187.js: Added.

2018-10-02  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] BigInt.proptotype.toString is broken when radix is power of 2
        https://bugs.webkit.org/show_bug.cgi?id=190033

        Reviewed by Yusuke Suzuki.

        * stress/big-int-to-string.js:

2018-10-01  Mark Lam  <mark.lam@apple.com>

        Function.toString() should also copy the source code Functions that are class definitions.
        https://bugs.webkit.org/show_bug.cgi?id=190186
        <rdar://problem/44733360>

        Reviewed by Saam Barati.

        * stress/regress-190186.js: Added.

2018-10-01  Dominik Infuehr  <dinfuehr@igalia.com>

        Split NaN-check into separate test
        https://bugs.webkit.org/show_bug.cgi?id=190010

        Reviewed by Saam Barati.

        DataView exposes NaN-representation, which is not necessarily the same on each
        architecture. Therefore move the check of the NaN-representation into its own
        file such that we can disable this test on MIPS where NaN-representation can be
        different on older CPUs.

        * stress/dataview-jit-set-nan.js: Added.
        (assert):
        (test.storeLittleEndian):
        (test.storeBigEndian):
        (test.store):
        (test):
        * stress/dataview-jit-set.js:
        (test5):

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

        Unreviewed, rolling out r236647.
        https://bugs.webkit.org/show_bug.cgi?id=190124

        Breaking test stress/big-int-to-string.js (Requested by
        caiolima_ on #webkit).

        Reverted changeset:

        "[BigInt] BigInt.proptotype.toString is broken when radix is
        power of 2"
        https://bugs.webkit.org/show_bug.cgi?id=190033
        https://trac.webkit.org/changeset/236647

2018-09-30  Caio Lima  <ticaiolima@gmail.com>

        [BigInt] BigInt.proptotype.toString is broken when radix is power of 2
        https://bugs.webkit.org/show_bug.cgi?id=190033

        Reviewed by Yusuke Suzuki.

        * stress/big-int-to-string.js:

2018-09-28  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][BigInt] Implement support for "&"
        https://bugs.webkit.org/show_bug.cgi?id=186228

        Reviewed by Yusuke Suzuki.

        * stress/big-int-bitwise-and-general.js: Added.
        (assert):
        (assert.sameValue):
        * stress/big-int-bitwise-and-jit.js: Added.
        (let.assert.sameValue):
        (bigIntBitAnd):
        * stress/big-int-bitwise-and-memory-stress.js: Added.
        (assert):
        * stress/big-int-bitwise-and-to-primitive-precedence.js: Added.
        (assert.sameValue):
        (let.o.Symbol.toPrimitive):
        (catch):
        * stress/big-int-bitwise-and-type-error.js: Added.
        (assert):
        (assertThrowTypeError):
        (let.o.valueOf):
        (o.valueOf):
        (o.toString):
        (o.Symbol.toPrimitive):
        * stress/big-int-bitwise-and-wrapped-value.js: Added.
        (assert.sameValue):
        (testBitAnd):
        (let.o.Symbol.toPrimitive):
        (o.valueOf):
        (o.toString):

2018-09-28  Ross Kirsling  <ross.kirsling@sony.com>

        JSC test stress/jsc-read.js doesn't support CRLF
        https://bugs.webkit.org/show_bug.cgi?id=190063

        Reviewed by Yusuke Suzuki.

        In order to run this test via Windows command prompt, we can't assume that the final newline will be LF.

        * stress/jsc-read.js:
        (test):

2018-09-27  Saam barati  <sbarati@apple.com>

        Verify the contents of AssemblerBuffer on arm64e
        https://bugs.webkit.org/show_bug.cgi?id=190057
        <rdar://problem/38916630>

        Reviewed by Mark Lam.

        * stress/regress-189132.js:

2018-09-27  Dominik Infuehr  <dinfuehr@igalia.com>

        Disable test without LLInt on ARMv7
        https://bugs.webkit.org/show_bug.cgi?id=190037

        Reviewed by Mark Lam.

        Test runs out of executable memory on ARMv7, do not run
        this test without LLInt enabled.

        * stress/regress-169445.js:

2018-09-26  Keith Miller  <keith_miller@apple.com>

        We should zero unused property storage when rebalancing array storage.
        https://bugs.webkit.org/show_bug.cgi?id=188151

        Reviewed by Michael Saboff.

        * stress/splice-should-zero-property-storage-when-rebalancing.js: Added.

2018-09-20  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Optimize Array#lastIndexOf
        https://bugs.webkit.org/show_bug.cgi?id=189780

        Reviewed by Saam Barati.

        * stress/array-lastindexof-array-prototype-trap.js: Added.
        (shouldBe):
        (AncestorArray.prototype.get 2):
        (AncestorArray):
        * stress/array-lastindexof-have-a-bad-time-c-runtime.js: Added.
        (shouldBe):
        * stress/array-lastindexof-hole-nan.js: Added.
        (shouldBe):
        (throw.new.Error):
        * stress/array-lastindexof-infinity.js: Added.
        (shouldBe):
        (throw.new.Error):
        * stress/array-lastindexof-negative-zero.js: Added.
        (shouldBe):
        (throw.new.Error):
        * stress/array-lastindexof-own-getter.js: Added.
        (shouldBe):
        (throw.new.Error.get array):
        (get array):
        * stress/array-lastindexof-prototype-trap.js: Added.
        (shouldBe):
        (DerivedArray.prototype.get 2):
        (DerivedArray):

2018-09-25  Saam Barati  <sbarati@apple.com>

        Calls to baselineCodeBlockForOriginAndBaselineCodeBlock in operationMaterializeObjectInOSR should actually pass in the baseline CodeBlock
        https://bugs.webkit.org/show_bug.cgi?id=189940
        <rdar://problem/43640987>

        Reviewed by Mark Lam.

        * stress/use-baseline-codeblock-materialize-osr-exit.js: Added.

2018-09-24  Saam Barati  <sbarati@apple.com>

        Array.prototype.indexOf fast path needs to ensure the length is still valid after performing effects
        https://bugs.webkit.org/show_bug.cgi?id=189922
        <rdar://problem/44651275>

        Reviewed by Mark Lam.

        * stress/array-indexof-fast-path-effects.js: Added.
        * stress/array-indexof-cached-length.js: Added.

2018-09-24  Saam barati  <sbarati@apple.com>

        ArgumentsEliminationPhase should snip basic blocks after proven OSR exits
        https://bugs.webkit.org/show_bug.cgi?id=189682
        <rdar://problem/43557315>

        Reviewed by Mark Lam.

        * stress/arguments-elimination-will-generate-edge-without-result.js: Added.
        (foo):

2018-09-22  Saam barati  <sbarati@apple.com>

        The sampling should not use Strong<CodeBlock> in its machineLocation field
        https://bugs.webkit.org/show_bug.cgi?id=189319

        Reviewed by Filip Pizlo.

        * stress/sampling-profiler-richards.js: Added.

2018-09-19  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Optimize Array#indexOf in C++ runtime
        https://bugs.webkit.org/show_bug.cgi?id=189507

        Reviewed by Saam Barati.

        * stress/array-indexof-array-prototype-trap.js: Added.
        (shouldBe):
        (AncestorArray.prototype.get 2):
        (AncestorArray):
        * stress/array-indexof-have-a-bad-time-c-runtime.js: Added.
        (shouldBe):
        * stress/array-indexof-hole-nan.js: Added.
        (shouldBe):
        (throw.new.Error):
        * stress/array-indexof-infinity.js: Added.
        (shouldBe):
        (throw.new.Error):
        * stress/array-indexof-negative-zero.js: Added.
        (shouldBe):
        (throw.new.Error):
        * stress/array-indexof-own-getter.js: Added.
        (shouldBe):
        (throw.new.Error.get array):
        (get array):
        * stress/array-indexof-prototype-trap.js: Added.
        (shouldBe):
        (DerivedArray.prototype.get 2):
        (DerivedArray):

2018-09-19  Saam barati  <sbarati@apple.com>

        AI rule for MultiPutByOffset executes its effects in the wrong order
        https://bugs.webkit.org/show_bug.cgi?id=189757
        <rdar://problem/43535257>

        Reviewed by Michael Saboff.

        * stress/multi-put-by-offset-must-filter-value-before-filtering-base.js: Added.
        (foo):
        (Foo):
        (g):

2018-09-17  Mark Lam  <mark.lam@apple.com>

        Ensure that ForInContexts are invalidated if their loop local is over-written.
        https://bugs.webkit.org/show_bug.cgi?id=189571
        <rdar://problem/44402277>

        Reviewed by Saam Barati.

        * stress/regress-189571.js: Added.

2018-09-17  Saam barati  <sbarati@apple.com>

        We must convert ProfileType to CheckStructureOrEmpty instead of CheckStructure
        https://bugs.webkit.org/show_bug.cgi?id=189676
        <rdar://problem/39682897>

        Reviewed by Michael Saboff.

        * typeProfiler/check-structure-or-empty-in-fixup.js: Added.
        (A):
        (K):
        (i.catch):

2018-09-14  Saam barati  <sbarati@apple.com>

        Don't dump OSRAvailabilityData in Graph::dump because a stale Availability may point to a Node that is already freed
        https://bugs.webkit.org/show_bug.cgi?id=189628
        <rdar://problem/39481690>

        Reviewed by Mark Lam.

        * stress/verbose-failure-dont-graph-dump-availability-already-freed.js: Added.
        (foo):

2018-09-11  Mark Lam  <mark.lam@apple.com>

        Test for array initialization in arrayProtoFuncSplice.
        https://bugs.webkit.org/show_bug.cgi?id=170253
        <rdar://problem/31328773>

        Rubber-stamped by Saam Barati.

        * stress/regress-170253.js: Added.

2018-09-11  Mark Lam  <mark.lam@apple.com>

        Test for IntlObject initialization.
        https://bugs.webkit.org/show_bug.cgi?id=170251
        <rdar://problem/31328419>

        Rubber-stamped by Saam Barati.

        * stress/regress-170251.js: Added.

2018-09-11  Mark Lam  <mark.lam@apple.com>

        Test for array memcpy'ing when JSGlobalObject::haveABadTime.
        https://bugs.webkit.org/show_bug.cgi?id=169889
        <rdar://problem/31155607>

        Reviewed by Saam Barati.

        * stress/regress-169889-array-concat.js: Added.
        * stress/regress-169889-array-concat1.js: Added.
        * stress/regress-169889-array-slice.js: Added.

2018-09-11  Mark Lam  <mark.lam@apple.com>

        Test for incorrect check in emitPutDerivedConstructorToArrowFunctionContextScope.
        https://bugs.webkit.org/show_bug.cgi?id=169445
        <rdar://problem/30957435>

        Reviewed by Saam Barati.

        * stress/regress-169445.js: Added.
        (let.gun.eval.A):
        (let.gun.eval.B.C):
        (let.gun.eval.B.C.prototype.trigger):
        (let.gun.eval.B.C.prototype.triggerWithRestParameters):
        (let.gun.eval.B):
        (let.gun.eval):

== Rolled over to ChangeLog-2018-09-11 ==
