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

        JSTests/stress/heap-analyzer-taking-lock.js intermittently fails --verifyGC=true.
        https://bugs.webkit.org/show_bug.cgi?id=222947
        rdar://75454308

        Reviewed by Michael Saboff.

        The issue was already fixed in https://bugs.webkit.org/show_bug.cgi?id=223241.
        Removing skipped test option.

        * stress/heap-analyzer-taking-lock.js:

2021-03-18  Saam Barati  <sbarati@apple.com>

        JS->Wasm IC must save the tag registers if it uses them
        https://bugs.webkit.org/show_bug.cgi?id=223491
        <rdar://66445108>

        Reviewed by Yusuke Suzuki.

        * wasm/stress/save-tag-callee-saves-in-js-entrypoint-ic.js: Added.
        (0x0b.WebAssembly.instantiate.wasm.then.e.const.mod.e.instance.exports.Test.prototype.get breakIt):
        (0x0b.WebAssembly.instantiate.wasm.then.e.const.mod.e.instance.exports.Test):
        (0x0b.WebAssembly.instantiate.wasm.then.e.const.obj.new.Test):

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

        [JSC] Error#cause should apply to WebAssembly error constructors too
        https://bugs.webkit.org/show_bug.cgi?id=223404

        Reviewed by Yusuke Suzuki.

        * stress/error-cause.js:
        Run tests on WebAssembly errors too.

        * wasm/js-api/test_basic_api.js:
        Fix test. This behavior was inconsistent with all other error types (and divergent from all other engines).

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

        Fix race condition in ConcurrentPtrHashSet.
        https://bugs.webkit.org/show_bug.cgi?id=223241
        rdar://74637896

        Reviewed by Yusuke Suzuki.

        * stress/race-to-add-opaque-roots-in-ConcurrentPtrHashSet.js: Added.

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

        [JSC] Implement Error#cause
        https://bugs.webkit.org/show_bug.cgi?id=223302

        Reviewed by Yusuke Suzuki.

        Add tests. test262 doesn't currently have any, but the spec is exceedingly simple anyway.

        * stress/error-cause.js: Added.

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

        Object allocation sinking phase should prioritize materializations with no dependencies before materializations with no reverse dependencies
        https://bugs.webkit.org/show_bug.cgi?id=221069
        <rdar://problem/73686589>

        Reviewed by Yusuke Suzuki.

        * stress/allocation-sinking-scope-materialization-order.js: Added.
        (var3.var2.x):
        (var3):

2021-03-16  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r274405.
        https://bugs.webkit.org/show_bug.cgi?id=223187

        Test is failing now

        Reverted changeset:

        "[JSC] Run one Mozilla test explicitly under PST since this
        test does not work when we are moving from PST to PDT"
        https://bugs.webkit.org/show_bug.cgi?id=223158
        https://trac.webkit.org/changeset/274405

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

        [JSC] Run one Mozilla test explicitly under PST since this test does not work when we are moving from PST to PDT
        https://bugs.webkit.org/show_bug.cgi?id=223158

        Reviewed by Mark Lam.

        This mozilla test is broken: it fails when we are close to the point moving from PST to PDT / from PDT to PST.
        We should always run this test under PST to avoid this DST related flakiness.

        We explicitly set TZ=PST for this test to ensure that this runs under PST (not PDT). TZ environment variable is
        recognized by system frameworks and some libraries including tzdata and ICU.

        * complex.yaml:
        * complex/mozilla-ecma-Date-15.9.5.14.js: Renamed from JSTests/mozilla/ecma/Date/15.9.5.14.js.
        (test):
        * complex/mozilla-shell.js: Added.
        (AddTestCase):
        (TestCase):
        (startTest):
        (test):
        (getTestCaseResult):
        (writeTestCaseResult):
        (writeFormattedResult):
        (writeLineToLog):
        (writeHeaderToLog):
        (stopTest):
        (getFailedCases):
        (getTimeZoneDiff):
        (adjustResultArray):
        (Day):
        (DaysInYear):
        (TimeInYear):
        (DayNumber):
        (TimeWithinDay):
        (YearNumber):
        (TimeFromYear):
        (DayFromYear):
        (InLeapYear):
        (YearFromTime):
        (MonthFromTime):
        (DayWithinYear):
        (DateFromTime):
        (WeekDay):
        (UTC):
        (DaylightSavingTA):
        (GetFirstSundayInApril):
        (GetLastSundayInOctober):
        (GetSecondSundayInMarch):
        (GetFirstSundayInNovember):
        (LocalTime):
        (MakeTime):
        (MakeDay):
        (TimeInMonth):
        (TimeClip):
        (ToInteger):
        (Enumerate):
        (GetContext):
        (OptLevel):
        * mozilla/mozilla-tests.yaml:

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

        [JSC] wasm atomic wait offset is not index
        https://bugs.webkit.org/show_bug.cgi?id=223159

        Reviewed by Mark Lam.

        * wasm.yaml:
        * wasm/threads-spec-tests/resources/wait-large.wast: Added.
        * wasm/threads-spec-tests/wait-large.wast.js: Added.

2021-03-11  Tadeu Zagallo  <tzagallo@apple.com>

        AI validator patchpoint should read heap top
        https://bugs.webkit.org/show_bug.cgi?id=223052
        <rdar://75087095>

        Reviewed by Yusuke Suzuki.

        * stress/private-methods-inheritance.js: Added.
        (A):
        (A.prototype.x):
        (B.prototype.y):
        (B):

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

        Align JSGlobalObject::defineOwnProperty() with the spec and other runtimes
        https://bugs.webkit.org/show_bug.cgi?id=203456

        Reviewed by Robin Morisset.

        * microbenchmarks/global-var-put-to-scope.js: Added.
        * stress/eval-func-decl-in-frozen-global.js:
        Object.freeze() redefines all global variables as ReadOnly, including hoisted `var error`.
        Aligns with V8.

        * stress/global-object-define-own-property-put-to-scope.js: Added.
        * stress/global-object-define-own-property.js: Added.
        * stress/to-this-before-arrow-function-closes-over-this-that-starts-as-lexical-environment.js:
        Fix unwanted name conflict, which was an error in the original test, not an intended part of it.
        Also, remove misleading comment on `defineProperty` and assert accessors are created on global object.
        Aligns with V8.

2021-03-11  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r274263.
        https://bugs.webkit.org/show_bug.cgi?id=223064

        Added few broken tests

        Reverted changeset:

        "AI validator patchpoint should read heap top"
        https://bugs.webkit.org/show_bug.cgi?id=223052
        https://trac.webkit.org/changeset/274263

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

        AI validator patchpoint should read heap top
        https://bugs.webkit.org/show_bug.cgi?id=223052
        <rdar://75087095>

        Reviewed by Saam Barati.

        * stress/private-methods-inheritance.js: Added.
        (A):
        (A.prototype.x):
        (B.prototype.y):
        (B):

2021-03-09  Keith Miller  <keith_miller@apple.com>

        JSC Crash in makeString() while creating Error object.
        https://bugs.webkit.org/show_bug.cgi?id=222452

        Reviewed by Mark Lam.

        * stress/large-string-should-not-crash-error-creation.js: Added.

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

        Use --verifyGC=true on some JSC stress test configurations.
        https://bugs.webkit.org/show_bug.cgi?id=222289

        Reviewed by Filip Pizlo.

        * stress/heap-analyzer-taking-lock.js:

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

        Using an undeclared private field inside eval shouldn't crash
        https://bugs.webkit.org/show_bug.cgi?id=222834
        <rdar://75035388>

        Reviewed by Yusuke Suzuki.

        * stress/declared-private-field-in-eval.js: Added.
        * stress/undeclared-private-field-in-eval.js: Added.

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

        BooleanConstructor should be inlined in DFG / FTL
        https://bugs.webkit.org/show_bug.cgi?id=220322

        Reviewed by Yusuke Suzuki.

        Reorganize tests so the every UseKind / needsTypeCheck / invert combination is covered.

        * microbenchmarks/array-filter-boolean-constructor.js: Added.
        * stress/dfg-branch.js: Added.
        * stress/dfg-to-boolean.js: Added.
        * stress/logical-not-masquerades-as-undefined.js: Removed.
        * stress/logical-not-masquerades.js: Removed.
        * stress/logical-not.js: Removed.
        * stress/value-to-boolean.js: Removed.

2021-03-05  Tadeu Zagallo  <tzagallo@apple.com>

        OpGetPrivateName needs to be listed in FOR_EACH_OPCODE_WITH_VALUE_PROFILE
        https://bugs.webkit.org/show_bug.cgi?id=222775
        <rdar://74982634>

        Reviewed by Michael Saboff.

        * stress/private-name-assignment-in-constructor.js: Added.
        (Foo):

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

        [WASM-Function-References] Update ref.func to produce (ref $t)
        https://bugs.webkit.org/show_bug.cgi?id=222779

        Reviewed by Yusuke Suzuki.

        Make ref.func to produce non nullable reference type which
        incorporates signature index. Since in JSC signature index represents
        type of the function from Type section we use it instead of type_idx
        for representing type of function references.

        * wasm/wasm.json:

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

        Don't trust parsing information to tell us if we've emitted op_call_eval
        https://bugs.webkit.org/show_bug.cgi?id=222694
        rdar://74778016

        Reviewed by Yusuke Suzuki.

        * stress/eval-liveness-should-not-come-from-parser.js: Added.
        (foo):

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

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

        Reviewed by Ross Kirsling.

        Update test262. New failure is due to the spec change, tracked in https://bugs.webkit.org/show_bug.cgi?id=222526.

        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Array/prototype/sort/call-with-primitive.js: Added.
        * test262/test/built-ins/Function/internals/Call/class-ctor-realm.js:
        * test262/test/language/expressions/object/dstr/object-rest-proxy-get-not-called-on-dontenum-keys.js: Added.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/language/expressions/object/dstr/object-rest-proxy-gopd-not-called-on-excluded-keys.js: Added.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/language/expressions/object/object-spread-proxy-get-not-called-on-dontenum-keys.js: Added.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/language/expressions/object/object-spread-proxy-no-excluded-keys.js: Copied from JSTests/test262/test/language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js.
        (getOwnPropertyDescriptor):
        (ownKeys):
        * test262/test/language/expressions/object/object-spread-proxy-ownkeys-returned-keys-order.js:
        * test262/test/language/statements/class/constructor-inferred-observable-iteration.js: Removed.
        * test262/test/language/statements/class/subclass/default-constructor-spread-override.js:
        (Array.prototype.Symbol.iterator):
        (Base):
        * test262/test262-Revision.txt:

2021-03-03  Caio Lima  <ticaiolima@gmail.com>

        [ESNext] Private methods can't be named as '#constructor'
        https://bugs.webkit.org/show_bug.cgi?id=222680

        Reviewed by Yusuke Suzuki.

        * stress/private-method-and-field-named-constructor.js: Added.

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

        Add JSModuleNamespaceObject::deletePropertyByIndex() method
        https://bugs.webkit.org/show_bug.cgi?id=222611

        Reviewed by Yusuke Suzuki.

        * modules/arbitrary-module-names-indexed.js: Added.
        * modules/arbitrary-module-names/export-indexed.js: Added.

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

        TypedArray's [[DefineOwnProperty]] should throw in case of failure
        https://bugs.webkit.org/show_bug.cgi?id=220492

        Reviewed by Darin Adler.

        * stress/array-species-config-array-constructor.js:
        * stress/put-direct-index-broken-2.js:
        Update assertions, which are most certainly incorrect, partly aligning JSC with V8.

        * stress/typedarray-access-monomorphic-neutered.js:
        * stress/typedarray-access-neutered.js:
        * stress/typedarray-defineOwnProperty-error.js: Added.
        * test262/expectations.yaml:
        Incorrect tests are being updated at https://github.com/tc39/test262/pull/2958.

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

        REGRESSION: Object.defineProperties triggering a setter
        https://bugs.webkit.org/show_bug.cgi?id=222538

        Reviewed by Keith Miller.

        * stress/dfg-put-by-val-string-or-symbol-should-check-direct.js: Added.
        (test1):
        (test2):

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

        [JSC] Throw TypeError when getFunctionRealm hits revoked Proxy
        https://bugs.webkit.org/show_bug.cgi?id=222523

        Reviewed by Alexey Shvayka.

        * test262/expectations.yaml:

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

        [JSC] Add gc and clearKeptObjects to $262
        https://bugs.webkit.org/show_bug.cgi?id=222527

        Reviewed by Ross Kirsling.

        * test262/config.yaml:

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

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

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:

2021-02-26  Michael Saboff  <msaboff@apple.com>

        Followup test fix to r273594
        https://bugs.webkit.org/show_bug.cgi?id=222506

        Reviewed by Yusuke Suzuki.

        * stress/regexp-max-size.js:
        (testTooBigBMPRegExp):
        (testTooBigNonBMPRegExp):
        (testAll):

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

        Remove bad assertion of AI ArrayMode state in various "by val" opcodes
        https://bugs.webkit.org/show_bug.cgi?id=222494
        <rdar://73613460>

        Reviewed by Filip Pizlo.

        * stress/dont-assert-ai-proved-array-mode.js: Added.
        (bar):
        (foo):

2021-02-26  Michael Saboff  <msaboff@apple.com>

        unexpected minimumInputSize in setupDisjunctionOffsets for regexp engine(yarr)
        https://bugs.webkit.org/show_bug.cgi?id=220357

        Reviewed by Saam Barati.

        New tests to check the boundary conditions for overflowing a pattern in a RegExp.

        * stress/regexp-max-size.js: Added.
        (testMaxRegExp):
        (testTooBigRegExp):
        (testMaxBMPRegExp):
        (testTooBigBMPRegExp):
        (testMaxNonBMPRegExp):
        (testTooBigNonBMPRegExp):
        (testAll):

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

        [JSC] Fix typo in wasm error message
        https://bugs.webkit.org/show_bug.cgi?id=222444

        Reviewed by Saam Barati.

        * wasm/stress/invalid-wasm-header.js: Added.
        (assert.throws):

2021-02-25  Michael Saboff  <msaboff@apple.com>

        [test262] test/built-ins/RegExp/match-indices needs updating for 'd' flag
        https://bugs.webkit.org/show_bug.cgi?id=222142

        Reviewed by Yusuke Suzuki.

        Updated WebKit's copy of Test262 to the latest.  All of the changes are related to
        the RegExp match indices stage 3 proposal (https://github.com/tc39/proposal-regexp-match-indices).
        Removed the local copies of the built-ins/RegExp/match-indices/ tests now that they 
        have been merged.

        Enabled the testing of the "regexp-match-indices" feature in config.yaml as we pass
        all of the associated tests.

        * stress/test262-indices-array-element.js: Removed.
        * stress/test262-indices-array-matched.js: Removed.
        * stress/test262-indices-array-non-unicode-match.js: Removed.
        * stress/test262-indices-array-properties.js: Removed.
        * stress/test262-indices-array-unicode-match.js: Removed.
        * stress/test262-indices-array-unicode-property-names.js: Removed.
        * stress/test262-indices-array-unmatched.js: Removed.
        * stress/test262-indices-array.js: Removed.
        * stress/test262-indices-groups-object-undefined.js: Removed.
        * stress/test262-indices-groups-object-unmatched.js: Removed.
        * stress/test262-indices-groups-object.js: Removed.
        * stress/test262-indices-groups-properties.js: Removed.
        * stress/test262-indices-property.js: Removed.
        * test262/config.yaml:
        * test262/test/built-ins/RegExp/duplicate-flags.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-undefined.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/RegExp/match-indices/no-indices-array.js: Added.
        * test262/test/built-ins/RegExp/prototype/flags/coercion-hasIndices.js: Added.
        (get Object):
        (assert.sameValue.get call):
        * test262/test/built-ins/RegExp/prototype/flags/get-order.js:
        (re.get hasIndices):
        * test262/test/built-ins/RegExp/prototype/flags/rethrow.js:
        (get Object):
        * test262/test/built-ins/RegExp/prototype/flags/return-order.js:
        * test262/test/built-ins/RegExp/prototype/flags/this-val-regexp.js:
        * test262/test/built-ins/RegExp/prototype/hasIndices: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/cross-realm.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/length.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/name.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/prop-desc.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/this-val-invalid-obj.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/this-val-non-obj.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/this-val-regexp-prototype.js: Added.
        * test262/test/built-ins/RegExp/prototype/hasIndices/this-val-regexp.js: Added.

2021-02-23  Michael Saboff  <msaboff@apple.com>

        [YARR JIT] Crash on overflow when compiling /(a{1000000000}b{1000000000}|c{1000000000}|)d{1000000000}e{1000000000}/.test();
        https://bugs.webkit.org/show_bug.cgi?id=220130

        Reviewed by Yusuke Suzuki.

        Modified the original fuzzer test to go 2^32-1.

        * stress/regexp-backtrack-offset-overflow.js: Added.

2021-02-21  Keith Miller  <keith_miller@apple.com>

        Implement the Top-level await proposal
        https://bugs.webkit.org/show_bug.cgi?id=202484

        Reviewed by Yusuke Suzuki.

        * test262/config.yaml:

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

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

        Reviewed by Alexey Shvayka.

        * test262/config.yaml:
        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Object/assign/target-is-frozen-accessor-property-set-succeeds.js: Added.
        (target1.set foo):
        (target2.Object.freeze.set sym):
        * test262/test/built-ins/Object/assign/target-is-frozen-data-property-set-throws.js: Added.
        * test262/test/built-ins/Object/assign/target-is-non-extensible-existing-accessor-property.js: Added.
        (target1.Object.preventExtensions.set foo):
        (target2.set sym):
        * test262/test/built-ins/Object/assign/target-is-non-extensible-existing-data-property.js: Added.
        * test262/test/built-ins/Object/assign/target-is-non-extensible-property-creation-throws.js: Added.
        (get bar):
        * test262/test/built-ins/Object/assign/target-is-sealed-existing-accessor-property.js: Added.
        (target1.Object.seal.set foo):
        (target2.set sym):
        * test262/test/built-ins/Object/assign/target-is-sealed-existing-data-property.js: Added.
        * test262/test/built-ins/Object/assign/target-is-sealed-property-creation-throws.js: Added.
        (get bar):
        * test262/test/built-ins/Object/freeze/proxy-with-defineProperty-handler.js: Added.
        (proxy.new.Proxy.get foo):
        (proxy.new.Proxy.set foo):
        (set foo.defineProperty):
        (set foo):
        * test262/test/built-ins/Object/seal/proxy-with-defineProperty-handler.js: Added.
        (proxy.new.Proxy.get foo):
        (proxy.new.Proxy.set foo):
        (set foo.defineProperty):
        (set foo):
        * test262/test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/findIndex/BigInt/predicate-may-detach-buffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/intl402/DateTimeFormat/constructor-no-instanceof.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/format/no-instanceof.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/resolvedOptions/no-instanceof.js: Added.
        * test262/test/intl402/NumberFormat/constructor-no-instanceof.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/no-instanceof.js: Added.
        * test262/test/intl402/NumberFormat/prototype/resolvedOptions/no-instanceof.js: Added.
        * test262/test262-Revision.txt:

2021-02-19  Michael Saboff  <msaboff@apple.com>

        Minor fixes to RegExp match indices after r273086
        https://bugs.webkit.org/show_bug.cgi?id=222157

        Reviewed by Yusuke Suzuki.

        Added a new test to verify that all flag RegExp flag combinations work round tripping
        from flags to flag proerties and back.
        Added standalone versions of the updated regexp-match-indices from the PR
        https://github.com/tc39/test262/pull/2934 as JSTest/stress test.
        Disabled the regexp-match-indices feature test in test262 until the pull request
        with updated tests land and we update the WebKit version.
        This is tracked in https://bugs.webkit.org/show_bug.cgi?id=222142.

        * stress/regexp-all-flags.js: Added.
        (flagsFromVariation):
        (setPropertiesForVariation):
        (missingPropertiesForVariation):
        (test.let.flagsSet.get call):
        (test):
        * stress/test262-indices-array-element.js: Added.
        (assertSameValue):
        * stress/test262-indices-array-matched.js: Added.
        (assertSameValue):
        (assertCompareArray):
        * stress/test262-indices-array-non-unicode-match.js: Added.
        (assertSameValue):
        (assertCompareArray):
        (assertDeepEqual):
        (verifyProperty):
        * stress/test262-indices-array-properties.js: Added.
        (verifyProperty):
        * stress/test262-indices-array-unicode-match.js: Added.
        (assertSameValue):
        (assertCompareArray):
        (assertDeepEqual):
        (verifyProperty):
        * stress/test262-indices-array-unicode-property-names.js: Added.
        (assertCompareArray):
        * stress/test262-indices-array-unmatched.js: Added.
        (assertSameValue):
        * stress/test262-indices-array.js: Added.
        (assert):
        (assertSameValue):
        * stress/test262-indices-groups-object-undefined.js: Added.
        (verifyProperty):
        * stress/test262-indices-groups-object-unmatched.js: Added.
        (assertSameValue):
        (assertCompareArray):
        * stress/test262-indices-groups-object.js: Added.
        (assertSameValue):
        (assertCompareArray):
        (verifyProperty):
        * stress/test262-indices-groups-properties.js: Added.
        (assertCompareArray):
        (verifyProperty):
        * stress/test262-indices-property.js: Added.
        (assertSameValue):
        (verifyProperty):
        * test262/config.yaml:

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

        [JSC] Do not use toObject for options in new Intl constructors
        https://bugs.webkit.org/show_bug.cgi?id=222164

        Reviewed by Alexey Shvayka.

        * stress/intl-get-options-not-using-toobject.js: Added.
        (shouldThrow):

2021-02-19  Caio Lima  <ticaiolima@gmail.com>

        [ESNext] Fix Test262 expectations for static private methods
        https://bugs.webkit.org/show_bug.cgi?id=222170

        Unreviewed, update test262/expectations.yaml

        * test262/expectations.yaml:

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

        [JSC] Simplify excludedSet handling in object rest expression
        https://bugs.webkit.org/show_bug.cgi?id=221668

        Reviewed by Alexey Shvayka.

        * microbenchmarks/object-rest-computed-destructuring.js: Added.
        * stress/object-rest-computed-inlined-numbers.js: Added.
        (inner):
        (outer):
        * stress/object-rest-computed-inlined.js: Added.
        (inner):
        (outer):

2021-02-18  Caio Lima  <ticaiolima@gmail.com>

        [JSC] Implement private static method
        https://bugs.webkit.org/show_bug.cgi?id=219181

        Reviewed by Yusuke Suzuki.

        * stress/class-private-method-access.js: Added.
        * stress/private-accessor-static-non-static.js: Added.
        * stress/private-getter-inner-class.js:
        * stress/static-private-methods-and-accessor-inner-class.js: Added.
        * stress/static-private-methods-and-accessor-multiple-evaluation.js: Added.
        * stress/static-private-methods-and-accessors-postfix-node.js: Added.
        * stress/static-private-methods-and-accessors-prefix-node.js: Added.
        * test262/config.yaml:

2021-02-18  Michael Saboff  <msaboff@apple.com>

        [JSC] Implement RegExp Match Indices proposal
        https://bugs.webkit.org/show_bug.cgi?id=202475

        Reviewed by Yusuke Suzuki.

        Updated tests.

        * es6/Proxy_internal_get_calls_RegExp.prototype.flags.js:
        * stress/static-getter-in-names.js:
        * test262/config.yaml:

2021-02-16  Yusuke Suzuki  <ysuzuki@apple.com> and Sergey Rubanov <chi187@gmail.com>

        WebAssembly: implement non-trapping float to int conversion
        https://bugs.webkit.org/show_bug.cgi?id=173471

        Reviewed by Tadeu Zagallo.

        * wasm/spec-tests/binary-leb128.wast.js:
        * wasm/spec-tests/conversions.wast.js:
        * wasm/wasm.json:

2021-02-15  Caio Lima  <ticaiolima@gmail.com>

        [ESNext] Implement private accessors
        https://bugs.webkit.org/show_bug.cgi?id=194435

        Reviewed by Yusuke Suzuki.

        * stress/private-accesor-duplicate-name-early-errors.js: Added.
        * stress/private-getter-brand-check.js: Added.
        * stress/private-getter-inner-class.js: Added.
        * stress/private-members-get-and-set.js: Added.
        * stress/private-methods-and-accessors-postfix-node.js: Added.
        * stress/private-methods-and-accessors-prefix-node.js: Added.
        * stress/private-names-available-on-direct-eval.js:
        * stress/private-names-available-on-eval-during-field-initialization.js: Copied from JSTests/stress/private-names-available-on-direct-eval.js.
        * stress/private-setter-brand-check.js: Added.
        * stress/private-setter-inner-class.js: Added.
        * test262/config.yaml:
        * test262/expectations.yaml:

2021-02-14  Michael Catanzaro  <mcatanzaro@gnome.org>

        JSC stress test stress/copy-data-properties-fast-path.js.default fails on s390x and ppc64le
        https://bugs.webkit.org/show_bug.cgi?id=221557
        <rdar://problem/74311603>

        Unreviewed, unskip this test since it seems Yusuke has already fixed it.

        * stress/copy-data-properties-fast-path.js:

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

        Proxy's [[GetOwnProperty]] should complete trap result descriptor before validation
        https://bugs.webkit.org/show_bug.cgi?id=221772

        Reviewed by Yusuke Suzuki.

        * stress/proxy-get-own-property.js:
        * stress/proxy-returning-incomplete-property-descriptor-error.js: Added.

2021-02-13  Michael Catanzaro  <mcatanzaro@gnome.org>

        JSC stress test stress/copy-data-properties-fast-path.js.default fails on s390x and ppc64le
        https://bugs.webkit.org/show_bug.cgi?id=221557

        Reviewed by Saam Barati.

        Skip the test on these architectures. I don't know what else to do with it.

        * stress/copy-data-properties-fast-path.js:

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

        Unreviewed, fix stress/copy-data-properties-fast-path.js occasional failure

        Wrap it with try-catch since stack-overflow RangeError in JS can happen.

        * stress/copy-data-properties-fast-path.js:

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

        SetIntegrityLevel should call [[DefineOwnProperty]] with partial descriptor
        https://bugs.webkit.org/show_bug.cgi?id=221497

        Reviewed by Yusuke Suzuki.

        * stress/arguments-define-property-throws-out-of-memory.js: Added.
        * stress/freeze-invokes-out-of-memory.js: Removed.
        * stress/object-freeze-with-arguments-no-oom-error.js: Added.
        * stress/object-freeze-with-proxy-defineProperty.js: Added.

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

        [JSC] C++ iteration should support fast iterator protocol
        https://bugs.webkit.org/show_bug.cgi?id=221526

        Reviewed by Alexey Shvayka.

        * microbenchmarks/map-constructor.js: Added.
        (test):
        * stress/map-constructor-hole-throw.js: Added.
        (shouldBe):
        (shouldThrow):
        (values.__proto__.return):
        (Map.prototype):

2021-02-09  Caio Lima  <ticaiolima@gmail.com>

        Fix warning introduced by r272580
        https://bugs.webkit.org/show_bug.cgi?id=221612

        Unreviewd, update test262/config.yaml

        * test262/config.yaml:

        Since `class-methods-private` also includes private accessors tests,
        we should enable it only after https://bugs.webkit.org/show_bug.cgi?id=194435
        gets closed.

2021-02-09  Caio Lima  <ticaiolima@gmail.com>

        [ESNext] Implement private methods
        https://bugs.webkit.org/show_bug.cgi?id=194434

        Reviewed by Filip Pizlo.

        * stress/private-brand-installed-after-super-call-from-arrow-function.js: Added.
        * stress/private-brand-installed-after-super-call-from-eval.js: Added.
        * stress/private-method-brand-check.js: Added.
        * stress/private-method-change-attribute-from-branded-structure.js: Added.
        * stress/private-method-change-prototype-from-branded-structure.js: Added.
        * stress/private-method-check-private-brand-ic.js: Added.
        * stress/private-method-check-structure-miss.js: Added.
        * stress/private-method-comparison.js: Added.
        * stress/private-method-delete-property-from-branded-structure.js: Added.
        * stress/private-method-extends-brand-check.js: Added.
        * stress/private-method-get-and-call.js: Added.
        * stress/private-method-invalid-multiple-brand-installation.js: Added.
        * stress/private-method-invalidate-compiled-with-constant-symbol.js: Added.
        * stress/private-method-nested-class.js: Added.
        * stress/private-method-on-sealed-objects.js: Added.
        * stress/private-method-on-uncacheable-dictionary.js: Added.
        * stress/private-method-polymorphic-with-constant-symbol.js: Added.
        * stress/private-method-set-brand-should-have-write-barrier.js: Added.
        * stress/private-method-untyped-use.js: Added.
        * stress/private-method-with-uncacheable-dictionary-transition.js: Added.
        * stress/private-methods-inline-cache.js: Added.
        * stress/private-methods-megamorphic-ic.js: Added.
        * stress/private-methods-on-proxy.js: Added.
        * stress/private-methods-poly-ic-multiple-classes.js: Added.
        * stress/private-methods-poly-ic-single-class.js: Added.
        * stress/private-names-available-on-direct-eval.js: Added.
        * test262/config.yaml:

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

        REGRESSION (r264574): Unchecked JS exception in validateAndApplyPropertyDescriptor()
        https://bugs.webkit.org/show_bug.cgi?id=221494

        Reviewed by Yusuke Suzuki.

        * stress/redefine-property-same-value-exception-check.js: Added.

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

        Unreviewd, update test262/config.yaml

        Tests are failing only in OSS build since OSS build is building WebKit with very old ICU headers.

        * test262/config.yaml:

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

        [JSC] globalFuncCopyDataProperties should not perform GC-sensitive operation in the middle of Structure::forEachProperty
        https://bugs.webkit.org/show_bug.cgi?id=221454

        Reviewed by Mark Lam.

        * stress/copy-data-properties-fast-path.js: Added.
        (foo):

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

        Object.assign should throw for property creation on non-extensible `target`
        https://bugs.webkit.org/show_bug.cgi?id=220712

        Reviewed by Ross Kirsling.

        * stress/object-assign-fast-path.js:

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

        [JSC] JSImmutableButterfly's toString cache should not happen for generic join
        https://bugs.webkit.org/show_bug.cgi?id=221444
        <rdar://problem/73972862>

        Reviewed by Mark Lam.

        * stress/immutable-butterfly-to-string-cache-should-not-happen-for-generic-join.js: Added.
        (foo):

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

        [JSC] Atomics.store in DFG / FTL should return ToNumber(input) value
        https://bugs.webkit.org/show_bug.cgi?id=221438
        <rdar://problem/73973264>

        Reviewed by Filip Pizlo.

        * stress/atomic-store-result-type-in-ai.js: Added.
        * stress/atomics-store-result-double-nan.js: Added.
        (shouldBe):
        (test):
        * stress/atomics-store-result-double-negative-zero.js: Added.
        (shouldBe):
        (test):
        * stress/atomics-store-result-double.js: Added.
        (shouldBe):
        (test):
        * stress/atomics-store-result-int52.js: Added.
        (shouldBe):
        * stress/atomics-store-result.js: Added.
        (shouldBe):

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

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

        Reviewed by Ross Kirsling.

        This patch updates test262 results. And since test262 bot is upgraded to Big Sur,
        we also clean up some of failures in config.yaml.
        Still some of Intl tests are failing because test262 strongly assumes a certain
        kind of format. We should fix it in test262 side since the spec does not require that.

        * test262/config.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Function/property-order.js: Added.
        * test262/test/built-ins/Function/prototype/property-order.js: Added.
        * test262/test/built-ins/Object/property-order.js: Added.
        * test262/test/built-ins/Promise/all/resolve-element-function-property-order.js: Added.
        (thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/allSettled/reject-element-function-property-order.js: Added.
        (thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/allSettled/resolve-element-function-property-order.js: Added.
        (thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/any/reject-element-function-property-order.js: Added.
        (thenable.then):
        (NotPromise):
        (NotPromise.resolve):
        * test262/test/built-ins/Promise/executor-function-property-order.js: Added.
        (NotPromise):
        * test262/test/built-ins/Promise/property-order.js: Added.
        * test262/test/built-ins/Promise/reject-function-property-order.js: Added.
        (new.Promise):
        * test262/test/built-ins/Promise/resolve-function-property-order.js: Added.
        (new.Promise):
        * test262/test/built-ins/Proxy/property-order.js: Added.
        * test262/test/built-ins/Proxy/revocable/revocation-function-property-order.js: Added.
        * test262/test/built-ins/ThrowTypeError/property-order.js: Added.
        (ThrowTypeError.Object.getOwnPropertyDescriptor):
        * test262/test/intl402/Collator/prototype/compare/compare-function-property-order.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/format/format-function-property-order.js: Added.
        * test262/test/intl402/NumberFormat/prototype/format/format-function-property-order.js: Added.
        * test262/test/language/export/escaped-as-export-specifier.js:
        * test262/test/language/export/escaped-default.js:
        * test262/test/language/export/escaped-from.js:
        * test262/test/language/expressions/async-arrow-function/escaped-async-line-terminator.js:
        * test262/test/language/expressions/async-arrow-function/escaped-async.js:
        * test262/test/language/expressions/async-function/escaped-async.js:
        * test262/test/language/expressions/async-generator/escaped-async.js:
        * test262/test/language/expressions/dynamic-import/escape-sequence-import.js:
        * test262/test/language/expressions/import.meta/syntax/escape-sequence-import.js:
        * test262/test/language/expressions/import.meta/syntax/escape-sequence-meta.js:
        * test262/test/language/expressions/new.target/escaped-new.js:
        * test262/test/language/expressions/new.target/escaped-target.js:
        * test262/test/language/expressions/object/method-definition/async-gen-meth-escaped-async.js:
        * test262/test/language/expressions/object/method-definition/async-meth-escaped-async.js:
        * test262/test/language/expressions/object/method-definition/escaped-get.js:
        * test262/test/language/expressions/object/method-definition/escaped-set.js:
        * test262/test/language/import/escaped-as-import-specifier.js:
        * test262/test/language/import/escaped-as-namespace-import.js:
        * test262/test/language/import/escaped-from.js:
        * test262/test/language/statements/async-function/escaped-async.js:
        * test262/test/language/statements/async-generator/escaped-async.js:
        * test262/test/language/statements/class/async-gen-meth-escaped-async.js:
        * test262/test/language/statements/class/async-meth-escaped-async.js:
        * test262/test/language/statements/class/syntax/escaped-static.js:
        * test262/test/language/statements/for-await-of/escaped-of.js:
        * test262/test/language/statements/for-of/escaped-of.js:
        * test262/test/language/statements/let/syntax/escaped-let.js:
        * test262/test262-Revision.txt:

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

        [JSC] Atomics should support BigInt64Array / BigUint64Array
        https://bugs.webkit.org/show_bug.cgi?id=221245

        Reviewed by Keith Miller.

        * stress/atomic-increment-bigint64.js: Added.
        (shouldBe):
        (i.agent.start.262.agent.receiveBroadcast):
        * stress/bigint-atomics-fail.js: Added.
        (shouldThrow):
        * stress/bigint64-atomics.js: Added.
        (shouldBe):
        (test):
        * stress/biguint64-atomics.js: Added.
        (shouldBe):
        (test):
        * stress/isLockFree.js:
        (foo6):
        (foo7):
        (foo8):
        (foo9):
        * stress/shared-array-buffer-bigint.js: Added.
        (shouldFail):
        (shouldSucceed):
        (runAtomic):
        * test262/config.yaml:

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

        Completion value of a finally block should not be ignored if completion is abrupt
        https://bugs.webkit.org/show_bug.cgi?id=221238

        Reviewed by Yusuke Suzuki.

        * stress/completion-value.js:
        Correct tests to match spec.

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

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

        [JSC] TypedArray#fill should be implemented in C++
        https://bugs.webkit.org/show_bug.cgi?id=221182

        Reviewed by Ross Kirsling.

        * stress/bigint-typed-array-fill.js: Added.
        (shouldBe):
        * stress/typed-array-fill.js: Added.
        (shouldBe):

2021-01-31  Yusuke Suzuki  <ysuzuki@apple.com>

        [JSC] Implement BigInt64Array and BigUint64Array
        https://bugs.webkit.org/show_bug.cgi?id=190800

        Reviewed by Ross Kirsling.

        Through this patch, we encounter two test262 failures and found that these tests have issues.

        * stress/bigint-typed-array-array-modes-profile.js: Added.
        (foo):
        * stress/bigint-typed-array-byte-offset.js: Added.
        (foo):
        * stress/bigint-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):
        * stress/bigint-typed-array-constructor-undefined.js: Added.
        * stress/bigint-typed-array-get-by-val-profiling.js: Added.
        (testArray.testCode):
        (testArray):
        * stress/bigint-typed-array-lastIndexOf-exception-check.js: Added.
        * stress/bigint-typed-array-put-by-val-profiling.js: Added.
        (testArray.testCode):
        (testArray):
        * stress/bigint-typedarray-getownproperty.js: Added.
        (assert):
        (foo):
        * stress/bigint64array-bytelength.js: Added.
        (test1):
        (test2):
        (shouldBe):
        * stress/bigint64array-get-by-val.js: Added.
        (shouldBe):
        (test1):
        (test2):
        * stress/bigint64array-put-by-val.js: Added.
        (shouldBe):
        (test11):
        (test12):
        (test21):
        (test22):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

        [JSC] Add @ in Error.stack if URL exists
        https://bugs.webkit.org/show_bug.cgi?id=221184

        Reviewed by Keith Miller.

        * ChakraCore/test/Error/NativeErrors_v4.baseline-jsc:
        * ChakraCore/test/Error/validate_line_column.baseline-jsc:
        * ChakraCore/test/StackTrace/FunctionName.js.baseline-jsc:
        * ChakraCore/test/fieldopts/fieldhoist6.baseline-jsc:
        * ChakraCore/test/fieldopts/fieldhoist6b.baseline-jsc:
        * ChakraCore/test/fieldopts/fieldhoist7.baseline-jsc:
        * ChakraCore/test/fieldopts/fieldhoist_negzero.baseline-jsc:
        * ChakraCore/test/fieldopts/fieldhoist_undefined_global.baseline-jsc:
        * ChakraCore/test/fieldopts/fieldhoist_unreachable.baseline-jsc:
        * stress/error-stack-at.js: Added.
        (shouldBe):
        (catch):
        (try.eval):

2021-01-31  Yusuke Suzuki  <ysuzuki@apple.com>

        Date.parse returns non-integral time value
        https://bugs.webkit.org/show_bug.cgi?id=220687

        Reviewed by Ross Kirsling.

        * complex.yaml:
        * complex/date-parse-milliseconds.js: Added.
        (shouldBe):

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

        [JSC] Adjust property order of host JSFunction
        https://bugs.webkit.org/show_bug.cgi?id=221168

        Reviewed by Darin Adler.

        * stress/host-function-property-order.js: Added.
        (shouldBe):

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

        [JSC] Fix WebAssembly.Global's error message and support "funcref"
        https://bugs.webkit.org/show_bug.cgi?id=221157

        Reviewed by Keith Miller.

        * wasm/stress/global-wrong-type.js: Added.
        (assert.throws):

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

        [JSC] WebAssembly.Global should support Funcref and Externref
        https://bugs.webkit.org/show_bug.cgi?id=220914

        Reviewed by Yusuke Suzuki.

        Add tests for WebAssembly.Global ctors with
        new reference types:
        https://webassembly.github.io/reference-types/js-api/index.html#dom-global-global.

        * wasm/references/globals.js: Added.
        (Pelmen):
        (testGlobalConstructorForExternref):
        (async testGlobalConstructorForFuncref):

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

        Unreviewed, recover removed tests
        https://bugs.webkit.org/show_bug.cgi?id=220216

        These tests are important since we need to ensure that we are not accidentally expose internal-only functions.

        * stress/function-caller-async-arrow-function-body.js:
        (shouldBe):
        (thingy.foo.async try): Deleted.
        (thingy): Deleted.
        * stress/function-caller-async-function-body.js:
        (shouldBe):
        (thingy.async foo):
        (thingy):
        * stress/function-caller-async-generator-body.js:
        (shouldBe):
        (thingy.async foo):
        (thingy):
        * stress/function-caller-generator-body.js:
        (shouldBe):
        (thingy.foo):
        (thingy):
        * stress/function-caller-generator-method-body.js:
        (shouldBe):
        (thingy.C.prototype.foo):
        (thingy.C):
        (thingy):

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

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

        Reviewed by Alexey Shvayka.

        Update test262 to the latest one.

        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Array/prototype/sort/precise-comparefn-throws.js: Added.
        (set logs):
        (set const):
        * test262/test/built-ins/Array/prototype/sort/precise-getter-appends-elements.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-decreases-length.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-deletes-predecessor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-deletes-successor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-increases-length.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-pops-elements.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-sets-predecessor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-getter-sets-successor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-prototype-accessors.js: Added.
        (set logs):
        * test262/test/built-ins/Array/prototype/sort/precise-prototype-element.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-appends-elements.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-decreases-length.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-deletes-predecessor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-deletes-successor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-increases-length.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-pops-elements.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-sets-predecessor.js: Added.
        * test262/test/built-ins/Array/prototype/sort/precise-setter-sets-successor.js: Added.
        * test262/test/built-ins/Object/seal/object-seal-configurable-attribute-of-own-data-property-of-o-is-set-from-true-to-false-and-other-attributes-of-the-property-are-unaltered.js: Renamed from JSTests/test262/test/built-ins/Object/seal/object-seal-the-configurable-attribute-of-own-data-property-of-o-is-set-from-true-to-false-and-other-attributes-of-the-property-are-unaltered.js.
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js:
        (dtf.format):
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js:
        (assert.sameValue):
        * test262/test/language/expressions/class/elements/super-access-from-arrow-func-on-field.js: Added.
        (C):
        (C.staticFunc):
        * test262/test/language/statements/class/elements/super-access-from-arrow-func-on-field.js: Added.
        (C.prototype.func):
        (C.staticFunc):
        (C):
        * test262/test/language/statements/for-of/head-lhs-async-dot.js: Added.
        * test262/test/language/statements/for-of/head-lhs-async-invalid.js: Added.
        * test262/test/language/statements/for/head-init-async-of.js: Added.
        (async of):
        * test262/test262-Revision.txt:

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

        WebAssembly: add support for stream APIs
        https://bugs.webkit.org/show_bug.cgi?id=173105

        Reviewed by Keith Miller.

        * wasm/stress/resources/tsf.wasm: Added.
        * wasm/stress/wasm-streaming-compiler-compile.js: Added.
        (shouldBe):
        (slice):
        (async main):
        (main.catch):
        * wasm/stress/wasm-streaming-compiler-instantiate.js: Added.
        (shouldBe):
        (slice):
        (async main.):
        (async main):
        (main.catch):

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

        Unreviewed, reverting r271186.
        https://bugs.webkit.org/show_bug.cgi?id=221051

        Breaks Facebook on arm64e devices

        Reverted changeset:

        "[JSC] DFG/FTL DirectCall need to respect Wasm IC"
        https://bugs.webkit.org/show_bug.cgi?id=220339
        https://trac.webkit.org/changeset/271186

2021-01-26  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Change default value for externref's tables from null to undefined
        https://bugs.webkit.org/show_bug.cgi?id=220918

        Reviewed by Yusuke Suzuki.

        According to the reference types spec
        https://webassembly.github.io/reference-types/js-api/#defaultvaluey
        we should use undefined as a default value in Table ctor, set and grow
        methods, so this patch replaces previous null default value for
        externref's table to undefined.

        * wasm/references/externref_table_import.js:
        (string_appeared_here.fullGC.assert.eq.1.exports.get_tbl):
        * wasm/references/table_js_api.js:
        (testTableGrowForExternrefTables):
        * wasm/references/table_misc.js:

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

        [JSC] JSPromise should not propagate TerminatedExecutionError
        https://bugs.webkit.org/show_bug.cgi?id=220820
        <rdar://problem/72929399>

        Reviewed by Mark Lam.

        * stress/terminated-execution-error-in-promise.js: Added.
        (let.x.get toString):
        (import.x.then):

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

        [JSC] FTL::prepareOSREntry can clear OSR entry CodeBlock if it is already invalidated
        https://bugs.webkit.org/show_bug.cgi?id=220718
        <rdar://problem/70527068>

        Reviewed by Mark Lam.

        * stress/ftl-osr-failure-clear-twice.js: Added.
        (foo):

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

        [JSC] earlyReturnFromInfiniteLoopsLimit should check all caller functions when emitting
        https://bugs.webkit.org/show_bug.cgi?id=220700
        <rdar://problem/71229150>

        Reviewed by Mark Lam.

        * stress/early-return-from-builtin.js: Added.
        (let.o.get value):
        (let.iter.Symbol.iterator):
        * stress/early-return-from-builtin2.js: Added.
        (foo):

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

        [JSC] Add another tests for r271571 part 2
        https://bugs.webkit.org/show_bug.cgi?id=220702
        <rdar://problem/71365255>

        Reviewed by Mark Lam.

        This patch adds yet another test for r271571.

        * stress/ftl-osr-entry-order-reverse3.js: Added.
        (foo.bar):
        (foo):

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

        [JSC] Add another tests for r271571
        https://bugs.webkit.org/show_bug.cgi?id=220701
        <rdar://problem/72464341>

        Reviewed by Mark Lam.

        This patch adds another test for r271571 "[JSC] FTL OSR entry FlushFormat array is reversed".

        * stress/ftl-osr-entry-order-reverse2.js: Added.
        (foo):

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

        [JSC] Add another tests for r271571 part 3
        https://bugs.webkit.org/show_bug.cgi?id=220703
        <rdar://problem/71224976>

        Reviewed by Mark Lam.

        This patch adds yet another test for r271571.

        * stress/ftl-osr-entry-order-reverse4.js: Added.
        (foo):

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

        [JSC] callerIsOMGCompiled should be robust
        https://bugs.webkit.org/show_bug.cgi?id=220697

        Reviewed by Mark Lam.

        * stress/callerIsOMGCompiled-should-be-robust.js: Added.

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

        [JSC] DFG/FTL Atomics should not accept Float32/Float64 typed arrays
        https://bugs.webkit.org/show_bug.cgi?id=220692
        <rdar://problem/73238369>

        Reviewed by Mark Lam.

        * stress/atomics-float-edge.js: Added.
        (foo):

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

        [JSC] FTL OSR entry FlushFormat array is reversed
        https://bugs.webkit.org/show_bug.cgi?id=220695
        <rdar://problem/72930932>

        Reviewed by Mark Lam.

        * stress/ftl-osr-entry-order-reverse.js: Added.
        (shouldThrow):
        (foo):

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

        [JSC] GenericArguments<Type>::defineOwnProperty's assumption about error is not correct
        https://bugs.webkit.org/show_bug.cgi?id=220693
        <rdar://problem/72929171>

        Reviewed by Mark Lam.

        * stress/freeze-invokes-out-of-memory.js: Added.
        (shouldThrow):

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

        [JSC] Add some more exception checks in globalFuncCopyDataProperties
        https://bugs.webkit.org/show_bug.cgi?id=220691

        Reviewed by Mark Lam.

        * stress/spread-object-check.js: Added.
        * stress/spread-object-check2.js: Added.

2021-01-14  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed. Add skips for Big Sur-dependent test262 tests.

        * test262/config.yaml:

2021-01-14  Ross Kirsling  <ross.kirsling@sony.com>

        [JSC] Correctly handle escaped keyword identifiers
        https://bugs.webkit.org/show_bug.cgi?id=220634

        Reviewed by Yusuke Suzuki.

        * stress/escaped-keyword-identifiers.js: Added.
        * test262/expectations.yaml: Mark 16 test cases as passing.

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

        [JSC] Class name 'await' is valid in sync context
        https://bugs.webkit.org/show_bug.cgi?id=220575

        Reviewed by Yusuke Suzuki.

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

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

        [JSC] Class names must be lexed as strict mode code
        https://bugs.webkit.org/show_bug.cgi?id=220567

        Reviewed by Yusuke Suzuki.

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

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

        [JSC] Bypass OperationPtrTagging for JITCage verification for CallDOMGetter
        https://bugs.webkit.org/show_bug.cgi?id=220564

        Reviewed by Saam Barati.

        * stress/domjit-getter2.js: Added.
        (shouldBe):
        (access):

2021-01-12  Caio Lima  <ticaiolima@gmail.com>

        [ESNext] super accesses broken on arrow functions defined as class field
        https://bugs.webkit.org/show_bug.cgi?id=220558

        Reviewed by Darin Adler.

        * stress/class-field-arrow-function-using-super.js: Added.

2021-01-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        Implement @copyDataProperties in C++ to optimize object rest / spread
        https://bugs.webkit.org/show_bug.cgi?id=193618

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/object-rest-destructuring.js: Added.
        * microbenchmarks/object-spread.js: Added.
        * stress/object-rest-deconstruct.js:
        * stress/object-spread.js:

2021-01-08  Alexey Shvayka  <shvaikalesh@gmail.com>

        for/in over a Proxy should not call [[GetOwnProperty]] trap twice per property
        https://bugs.webkit.org/show_bug.cgi?id=189034

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/for-in-proxy.js: Added.
        * stress/for-in-redefine-enumerable.js:
        * stress/proxy-for-in.js: Added.

2021-01-08  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add optional default value parameter for Table.constructor, Table.grow and Table.set
        https://bugs.webkit.org/show_bug.cgi?id=220323

        Reviewed by Yusuke Suzuki.

        Add tests for Table.grow, Table.set and Table ctor with optional initializing parameter.
        Spec: https://webassembly.github.io/reference-types/js-api/index.html#tables.

        * wasm/references/table_js_api.js: Added.
        (Pelmen):
        (testTableGrowForExternrefTables):
        (async testTableGrowForFuncrefTables):
        (testTableConstructorForExternrefTables):
        (async testTableConstructorForFuncrefTables):
        (async testTableSetForFuncrefTables):

2021-01-08  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add linking tests
        https://bugs.webkit.org/show_bug.cgi?id=220314

        Reviewed by Yusuke Suzuki.

        Added linking tests for the ref-types spec.
        Disabled a few failed minor cases and created apropriate bugs.

        * wasm.yaml:
        * wasm/references-spec-tests/linking.wast.js: Added.

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

        [JSC] AtomicsIsLockFree's AI result is wrong
        https://bugs.webkit.org/show_bug.cgi?id=220452
        <rdar://problem/71228690>

        Reviewed by Mark Lam.

        * stress/atomics-is-lock-free-and-zero.js: Added.

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

        [JSC] DFG/FTL Atomics should assume non-typed-array input with storage-edge
        https://bugs.webkit.org/show_bug.cgi?id=220451
        <rdar://problem/71237065>

        Reviewed by Mark Lam.

        * stress/atomics-and-multiple-typed-arrays.js: Added.
        (foo):
        * stress/atomics-and-string.js: Added.
        (foo):

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

        [JSC] Simplify get*PropertyNames() methods and EnumerationMode
        https://bugs.webkit.org/show_bug.cgi?id=212954

        Reviewed by Yusuke Suzuki.

        * ChakraCore.yaml:
        * ChakraCore/test/Basics/enum.baseline-jsc: Removed.
        * microbenchmarks/for-in-on-object-with-lazily-materialized-properties.js:
        Removed because ErrorInstance no longer materializes properties during for/in enumeration.

        * microbenchmarks/object-keys-cloned-arguments.js: Added.
        * microbenchmarks/object-keys-error-object.js: Added.
        * stress/arguments-properties-order.js: Added.
        * stress/for-in-tests.js:
        * stress/for-in-typed-array.js:

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

        [JSC] New expression and value function call should reserve function register if arguments include assignments
        https://bugs.webkit.org/show_bug.cgi?id=220429
        <rdar://problem/70598359>

        Reviewed by Alexey Shvayka.

        * stress/comma-value-func-call-resolve.js: Added.
        (shouldBe):
        (fn.x):
        (fn):
        * stress/construct-overwritten-variable.js:
        (shouldThrow):
        (new.x.x): Deleted.
        * stress/construct-spread-overwritten-variable-2.js:
        (shouldThrow):
        (new.x.x): Deleted.
        * stress/construct-spread-overwritten-variable.js:
        (shouldThrow):
        (new.x.x): Deleted.
        * stress/destructuring-func-call-resolve.js: Added.
        (shouldBe):
        (fn.x):
        (fn):
        (fn2.x):
        (fn2):
        * stress/resolve-func-call-resolve.js: Added.
        (shouldBe):
        (fn.x):
        (fn):
        * stress/tagged-template-call-resolve.js: Added.
        (shouldBe):
        (fn.x):
        (fn):
        * test262/expectations.yaml:

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

        Unreviewed, check ICU header version instead of ICU version
        https://bugs.webkit.org/show_bug.cgi?id=220419

        Since open-source WebKit is built against old ICU header, we sometimes disable features based on ICU header version.
        So, need to check features based on ICU header version instead of ICU version.

        * stress/intl-datetimeformat-format-range-should-check-practically-equal.js:
        (vm.icuHeaderVersion):
        (vm.icuVersion): Deleted.
        * stress/intl-datetimeformat-format-range-to-parts-should-check-practically-equal.js:
        (vm.icuHeaderVersion):
        (vm.icuVersion): Deleted.

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

        Unreviewed, adjust test262 result
        https://bugs.webkit.org/show_bug.cgi?id=220420

        test262 bot is using Catalina's ICU.

        * test262/config.yaml:

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

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

        Reviewed by Mark Lam.

        * test262/expectations.yaml:
        * test262/harness/testIntl.js:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js: Removed.
        * test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js:
        (let.obj.toString):
        (testWithBigIntTypedArrayConstructors):
        (obj.toString): Deleted.
        * test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js:
        (let.obj.toString):
        (testWithTypedArrayConstructors):
        (obj.toString): Deleted.
        * test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js: Added.
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js: Added.
        (zip):
        (compare):
        * test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js:
        * test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js:
        * test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js:
        * test262/test/intl402/Locale/extensions-grandfathered.js:
        * test262/test/intl402/Locale/likely-subtags-grandfathered.js:
        (of.regularGrandfathered.const.extra.of.extras.i.test):
        * test262/test262-Revision.txt:

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

        [JSC] DateTimeFormat#formatRange should generate the same output to DateTimeFormat#format if startDate and endDate are "practically-equal"
        https://bugs.webkit.org/show_bug.cgi?id=220395

        Reviewed by Ross Kirsling.

        Imported some test262 tests. Updated, fixed some issues (`formatToParts` test was using `format`, we should upstream it to test262), and added more tests.

        * stress/intl-datetimeformat-format-range-should-check-practically-equal.js: Added.
        (shouldBe):
        (vm.icuVersion):
        * stress/intl-datetimeformat-format-range-to-parts-should-check-practically-equal.js: Added.
        (shouldBe):
        (zip):
        (compare):
        (vm.icuVersion):

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

        [WASM] [BigInt] Add I64 to BigInt conversion
        https://bugs.webkit.org/show_bug.cgi?id=213528

        Reviewed by Michael Saboff.

        * wasm/function-tests/function-import-return-value.js:
        (assert.truthy):
        (assert.throws):
        (assert.eq):
        * wasm/function-tests/i64-conversion.js: Renamed from JSTests/wasm/function-tests/i64-from-js-exceptions.js.
        (assert.eq.instance.exports.foo.valueOf):
        * wasm/js-api/global-error.js:
        * wasm/stress/i64-call.js: Added.
        (async test):
        * wasm/stress/i64-extract.js: Added.
        (testI64):
        * wasm/stress/immutable-globals.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):
        * wasm/stress/multi-value-i64.js: Added.
        (async test):
        * wasm/stress/mutable-globals.js:

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

        We should have a DFG intrinsic for the construct case of the Object constructor
        https://bugs.webkit.org/show_bug.cgi?id=155591

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/new-object-no-expected-function.js: Added.
        * stress/call-object-constructor-with-new.js: Added.
        * stress/dfg-builtin-constructor-cross-realm.js: Added.

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

        [WASM-References] Added few unreached-invalid tests
        https://bugs.webkit.org/show_bug.cgi?id=220311

        Reviewed by Yusuke Suzuki.

        Added unreached-invalid tests and fix error messages in existing tests.

        * wasm.yaml:
        * wasm/js-api/global-error.js:
        * wasm/references-spec-tests/unreached-invalid.wast.js: Added.

2021-01-04  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Fix data section parsing and add more tests from ref-types
        https://bugs.webkit.org/show_bug.cgi?id=220235

        Reviewed by Yusuke Suzuki.

        Add more tests from ref-types spec.

        * wasm.yaml:
        * wasm/references-spec-tests/binary-leb128.wast.js: Added.
        * wasm/references-spec-tests/binary.wast.js: Added.
        * wasm/references-spec-tests/br_table.wast.js: Added.
        * wasm/references-spec-tests/call_indirect.wast.js: Added.
        * wasm/references-spec-tests/custom.wast.js: Added.
        * wasm/references-spec-tests/data.wast.js: Added.
        * wasm/references-spec-tests/exports.wast.js: Added.
        * wasm/references-spec-tests/global.wast.js: Added.
        * wasm/references-spec-tests/imports.wast.js: Added.
        * wasm/references-spec-tests/memory_grow.wast.js: Added.
        * wasm/references-spec-tests/table.wast.js: Added.

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

        [JSC] Remove unnecessary mov bytecodes when performing simple object pattern destructuring to variables
        https://bugs.webkit.org/show_bug.cgi?id=220219

        Reviewed by Alexey Shvayka.

        * stress/object-pattern-simple-fast-path.js: Added.
        (shouldBe):
        (shouldThrow):
        (test1):

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

        Improve error message for uninitialized |this| in derived constructor
        https://bugs.webkit.org/show_bug.cgi?id=220221

        Reviewed by Yusuke Suzuki.

        * stress/async-arrow-functions-lexical-binding-in-class.js:
        * stress/async-arrow-functions-lexical-super-binding.js:
        * stress/class-derived-from-null.js:
        * stress/generator-eval-this.js:
        * stress/super-property-access-tdz.js:

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

        Don't throw if `function.caller` is a non-strict / generator / async function
        https://bugs.webkit.org/show_bug.cgi?id=220216

        Reviewed by Yusuke Suzuki.

        * stress/function-caller-async-arrow-function-body.js: Removed.
        * stress/function-caller-async-function-body.js: Removed.
        * stress/function-caller-async-generator-body.js: Removed.
        * stress/function-caller-generator-body.js: Removed.
        * stress/function-caller-generator-method-body.js: Removed.
        * stress/function-hidden-as-caller.js: Added.
        * stress/polymorphic-access-exception-handler-should-not-clobber-used-register.js:
        * stress/tail-call-recognize.js:
        * test262/expectations.yaml: Mark 45 test cases as passing.

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

        JSFunction::deleteProperty() fails to delete a non-existent "prototype" property
        https://bugs.webkit.org/show_bug.cgi?id=220211

        Reviewed by Yusuke Suzuki.

        * stress/function-delete-prototype.js: Added.

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

        Unreviewed, fix iteration count check
        https://bugs.webkit.org/show_bug.cgi?id=220206

        * wasm/stress/multivalue-iteration-count.js: Added.
        (async let):

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

        [JSC] Update WebAssembly instance's exports object
        https://bugs.webkit.org/show_bug.cgi?id=220189

        Reviewed by Alexey Shvayka.

        * stress/sampling-profiler-wasm-name-section.js:
        (platformSupportsSamplingProfiler.vm.isWasmSupported):
        * stress/sampling-profiler-wasm.js:
        (platformSupportsSamplingProfiler.vm.isWasmSupported):
        * wasm/js-api/test_basic_api.js:
        (const.c.in.constructorProperties.switch):
        * wasm/stress/exports-object.js: Added.
        (async try):
        (catch):

2020-12-27  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Fix table.init and table.grow to satisfy the spec
        https://bugs.webkit.org/show_bug.cgi?id=220181

        Reviewed by Yusuke Suzuki.

        Fix behaviour of the previous tests and added ref-types
        spec tests for bulk operations and table.grow.

        * wasm.yaml:
        * wasm/references-spec-tests/bulk.wast.js: Added.
        * wasm/references-spec-tests/table_grow.wast.js: Added.
        * wasm/references/table_misc.js:
        (TableSize.0.End.End.WebAssembly):

2020-12-27  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Adjust table.fill to satisfy the spec
        https://bugs.webkit.org/show_bug.cgi?id=220161

        Reviewed by Yusuke Suzuki.

        Added table.fill spec tests and adjusted existing tests.

        * wasm.yaml:
        * wasm/references-spec-tests/table_fill.wast.js: Added.
        * wasm/references/table_misc.js:
        (GetLocal.0.GetLocal.1.TableGrow.0.End.End.WebAssembly):

2020-12-27  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add declared function indexes set to check from what functions we can create refs
        https://bugs.webkit.org/show_bug.cgi?id=220009

        Reviewed by Yusuke Suzuki.

        Now we satisfy ref_func spec test so I've added it.

        * wasm.yaml:
        * wasm/references-spec-tests/ref_func.wast.js: Added.

2020-12-25  Mark Lam  <mark.lam@apple.com>

        VMInspector::dumpRegisters() should not dump beyond the start of the next frame.
        https://bugs.webkit.org/show_bug.cgi?id=220136
        rdar://64404201

        Reviewed by Yusuke Suzuki.

        * stress/dumpRegisters-should-stop-before-next-frame.js: Added.

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

        [JSC] Update elem.wast.js test
        https://bugs.webkit.org/show_bug.cgi?id=220011

        Reviewed by Ross Kirsling.

        Now all tests pass. Remove FIXME.

        * wasm/spec-tests/elem.wast.js:

2020-12-18  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add reference spec tests for table instructions
        https://bugs.webkit.org/show_bug.cgi?id=220005

        Reviewed by Yusuke Suzuki.

        These are reference types spec tests that we've already supported.
        It help us prevent future inconsistencies with the proposal:
        https://github.com/WebAssembly/reference-types/tree/master/test/core

        * wasm.yaml:
        * wasm/references-spec-tests/table-sub.wast.js: Added.
        * wasm/references-spec-tests/table_get.wast.js: Added.
        * wasm/references-spec-tests/table_set.wast.js: Added.
        * wasm/references-spec-tests/table_size.wast.js: Added.

2020-12-17  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add support for memory.copy, memory.init and data.drop
        https://bugs.webkit.org/show_bug.cgi?id=219943

        Reviewed by Yusuke Suzuki.

        Added ref-types spec tests for memory.copy, memory.init and data.drop:
        https://github.com/WebAssembly/reference-types/tree/master/test/core.
        Renamed table_instructions_parse_unreachable test into just
        parse_unreachable to prevent confusion.

        * wasm.yaml:
        * wasm/references-spec-tests/memory_copy.wast.js: Added.
        * wasm/references-spec-tests/memory_init.wast.js: Added.
        * wasm/references/memory_copy.js: Added.
        (async test):
        * wasm/references/memory_copy_shared.js: Added.
        (async test):
        * wasm/references/parse_unreachable.js: Renamed from JSTests/wasm/references/table_instructions_parse_unreachable.js.
        (invalidMemoryCopyUnreachable):
        (invalidMemoryInitUnreachable):
        (invalidDataDropUnreachable):
        * wasm/wasm.json:

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

        [JSC] Accept arbitrary module namespace identifier names
        https://bugs.webkit.org/show_bug.cgi?id=217576
        <rdar://problem/70416104>

        Reviewed by Darin Adler.

        * modules/arbitrary-module-names.js: Added.
        * modules/arbitrary-module-names/export.js: Added.
        * modules/arbitrary-module-names/export2.js: Added.
        * stress/modules-syntax-error.js:
        * test262/config.yaml:

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

        Non-enumerable property fails to shadow inherited enumerable property from for-in
        https://bugs.webkit.org/show_bug.cgi?id=38970

        Reviewed by Keith Miller.

        * stress/arguments-bizarre-behaviour-disable-enumerability.js:
        * stress/for-in-redefine-enumerable.js: Added.
        * stress/for-in-shadow-non-enumerable.js: Added.
        * test262/expectations.yaml: Mark 4 test cases as passing.

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

        Suppress noise from JSTests/stress/lars-sab-workers.js
        https://bugs.webkit.org/show_bug.cgi?id=219922

        Reviewed by Saam Barati.

        Mark it as noisy tests.

        * stress/lars-sab-workers.js:

2020-12-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r270860.
        https://bugs.webkit.org/show_bug.cgi?id=219918

        We workaround it differently, so this revert is not necessary

        Reverted changeset:

        "Unreviewed, reverting r269320, r269341, r269502, and
        r269576."
        https://bugs.webkit.org/show_bug.cgi?id=219915
        https://trac.webkit.org/changeset/270860

2020-12-15  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r269320, r269341, r269502, and r269576.
        https://bugs.webkit.org/show_bug.cgi?id=219915

        ICU C++ internal API causes trouble

        Reverted changesets:

        "REGRESSION (r254038): Simple.com money transfer UI is very
        laggy (multiple seconds per keypress)"
        https://bugs.webkit.org/show_bug.cgi?id=218348
        https://trac.webkit.org/changeset/269320

        "[JSC] Obtain default timezone ID from cached icu::TimeZone"
        https://bugs.webkit.org/show_bug.cgi?id=218531
        https://trac.webkit.org/changeset/269341

        "toLocaleDateString() resolves incorrect date for some old
        dates"
        https://bugs.webkit.org/show_bug.cgi?id=161623
        https://trac.webkit.org/changeset/269502

        "[JSC] Add TimeZone range cache over ICU TimeZone API"
        https://bugs.webkit.org/show_bug.cgi?id=218681
        https://trac.webkit.org/changeset/269576

2020-12-15  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add support for memory.fill
        https://bugs.webkit.org/show_bug.cgi?id=219848

        Reviewed by Yusuke Suzuki.

        Added spec tests and unreachable tests for memory.fill.

        * wasm.yaml:
        * wasm/references-spec-tests/memory_fill.wast.js: Added.
        * wasm/references/memory_fill_shared.js: Added.
        (async test):
        * wasm/references/table_instructions_parse_unreachable.js:
        (invalidMemoryFillUnreachable):
        * wasm/wasm.json:

2020-12-15  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add support for type annotated select
        https://bugs.webkit.org/show_bug.cgi?id=219595

        Reviewed by Yusuke Suzuki.
        
        Added new harness for testing ref-types proposal because it has
        different API with core/spec. However, a few files are actually the
        same I decided to repeat them to have an independent copy.
        Added ref-types spec's tests for the new type annotated select
        instruction:
        https://github.com/WebAssembly/reference-types/blob/master/test/core/select.wast.

        * wasm.yaml:
        * wasm/ref-spec-harness.js: Added.
        (import.string_appeared_here.then):
        (test):
        (promise_test):
        (let.assert_unreached):
        (let.console.log):
        * wasm/ref-spec-harness/async_index.js: Added.
        (let.testNum):
        (uniqueTest):
        (assertThrows):
        (externref):
        (is_externref):
        (is_funcref):
        (eq_externref):
        (eq_funcref):
        (binary):
        (module):
        (assert_invalid):
        (instance):
        (exports):
        (then.):
        (reinitializeRegistry.get promise_test):
        (reinitializeRegistry):
        (catch):
        (assert_exhaustion):
        (get const):
        * wasm/ref-spec-harness/sync_index.js: Added.
        (let.testNum):
        (assertThrows):
        (_assert):
        (ValueResult):
        (ErrorResult):
        (Result.prototype.isError):
        (externref):
        (is_externref):
        (is_funcref):
        (eq_externref):
        (eq_funcref):
        (reinitializeRegistry.let.handler.get return):
        (binary):
        (module):
        * wasm/ref-spec-harness/wasm-constants.js: Added.
        (hostref):
        (bytes):
        (bytesWithHeader):
        (makeSig):
        (makeSig_v_x):
        (makeSig_v_xx):
        (makeSig_r_v):
        (makeSig_r_x):
        (makeSig_r_xx):
        (assertTraps):
        (assertWasmThrows):
        * wasm/ref-spec-harness/wasm-module-builder.js: Added.
        (Binary.prototype.emit_u8):
        (Binary.prototype.emit_u16):
        (Binary.prototype.emit_u32):
        (Binary.prototype.emit_u32v):
        (Binary.prototype.emit_bytes):
        (Binary.prototype.emit_string):
        (Binary.prototype.emit_header):
        (Binary.prototype.emit_section):
        (Binary):
        (WasmFunctionBuilder):
        (WasmFunctionBuilder.prototype.exportAs):
        (WasmFunctionBuilder.prototype.exportFunc):
        (WasmFunctionBuilder.prototype.addBody):
        (WasmFunctionBuilder.prototype.addLocals):
        (WasmFunctionBuilder.prototype.end):
        (WasmGlobalBuilder):
        (WasmGlobalBuilder.prototype.exportAs):
        (WasmModuleBuilder):
        (WasmModuleBuilder.prototype.addStart):
        (WasmModuleBuilder.prototype.addMemory):
        (WasmModuleBuilder.prototype.addExplicitSection):
        (WasmModuleBuilder.prototype.stringToBytes):
        (WasmModuleBuilder.prototype.addCustomSection):
        (WasmModuleBuilder.prototype.addType):
        (WasmModuleBuilder.prototype.addGlobal):
        (WasmModuleBuilder.prototype.addFunction):
        (WasmModuleBuilder.prototype.addImport):
        (WasmModuleBuilder.prototype.addImportedGlobal):
        (WasmModuleBuilder.prototype.addImportedMemory):
        (WasmModuleBuilder.prototype.addImportedTable):
        (WasmModuleBuilder.prototype.addExport):
        (WasmModuleBuilder.prototype.addExportOfKind):
        (WasmModuleBuilder.prototype.addDataSegment):
        (WasmModuleBuilder.prototype.exportMemoryAs):
        (WasmModuleBuilder.prototype.addFunctionTableInit):
        (WasmModuleBuilder.prototype.appendToTable):
        (WasmModuleBuilder.prototype.setFunctionTableLength):
        (WasmModuleBuilder.prototype.toArray):
        (WasmModuleBuilder.prototype.toBuffer):
        (WasmModuleBuilder.prototype.instantiate):
        * wasm/ref-spec-harness/wast.js: Added.
        (normalize):
        (require.else._registry.name):
        (require):
        (add_hex_char):
        (add_char):
        (string_with):
        (list_of_opt):
        (break_bytes.f):
        (break_bytes):
        (f):
        (decls):
        (func_type):
        (limits):
        (global_type):
        (testop):
        (relop):
        (unop):
        (binop):
        (cvtop):
        (oper):
        (mem_size):
        (extension):
        (memop):
        (storeop):
        (var):
        (constop):
        (instr.else.switch.case.0.f):
        (instr.else.switch.case.1.f.1):
        (instr.else.switch.case.2.f.2):
        (instr):
        (func_with_name):
        (func):
        (start):
        (table):
        (memory):
        (segment):
        (elems):
        (data):
        (typedef):
        (import_kind):
        (import):
        (export_kind):
        (export):
        (var_opt):
        (is_func_import):
        (is_table_import):
        (is_memory_import):
        (is_global_import):
        (f.1):
        (f.2):
        (f.3):
        (module_with_var_opt):
        (module_):
        (literal):
        (definition):
        (access):
        (action):
        (script):
        (_registry.string_appeared_here):
        (init):
        (make_matrix):
        (copy):
        (append):
        (sub):
        (fill):
        (blit):
        (iter):
        (map):
        (iteri):
        (mapi):
        (to_list):
        (list_length):
        (of_list):
        (fold_left):
        (fold_right):
        (maxson):
        (trickle):
        (bubble):
        (trickleup):
        (sort):
        (merge):
        (isortto):
        (sortto):
        (stable_sort):
        (import_type):
        (export_type):
        (dims.n):
        (dims.d.i):
        (dims):
        (map_file):
        (create):
        (of_array):
        (slice_left):
        (slice_right):
        (slice_left_1):
        (slice_right_1):
        (slice_left_2):
        (slice_right_2):
        (array1_of_genarray):
        (array2_of_genarray):
        (array3_of_genarray):
        (reshape_1):
        (reshape_2):
        (reshape_3):
        (reshape):
        (__):
        (contents):
        (to_bytes):
        (nth):
        (length):
        (clear):
        (reset):
        (resize):
        (add_substring):
        (add_subbytes):
        (add_string):
        (add_bytes):
        (add_buffer):
        (add_channel):
        (output_buffer):
        (closing):
        (advance_to_closing):
        (advance_to_non_alpha):
        (find_ident):
        (add_substitute):
        (make):
        (to_string):
        (of_string):
        (sub_string):
        (extend):
        (blit_string):
        (concat):
        (cat):
        (is_space):
        (trim):
        (escaped):
        (uppercase):
        (lowercase):
        (apply1):
        (capitalize):
        (uncapitalize):
        (index_rec):
        (index):
        (index_from):
        (rindex_rec):
        (rindex):
        (rindex_from):
        (contains_from):
        (contains):
        (rcontains_from):
        (caml_array_sub):
        (len):
        (caml_array_concat):
        (caml_make_vect):
        (caml_array_blit):
        (get if):
        (caml_set_oo_id):
        (get_id):
        (caml_int32_float_of_bits):
        (caml_int32_bits_of_float):
        (caml_classify_float):
        (caml_modf_float):
        (caml_ldexp_float):
        (caml_frexp_float):
        (caml_copysign_float):
        (caml_expm1_float):
        (caml_hypot_float):
        (caml_log10_float):
        (caml_failwith):
        (parse_digit):
        (int_of_string_base):
        (parse_sign_and_base):
        (caml_int_of_string.aux):
        (caml_int_of_string):
        (caml_int64_of_string.aux):
        (caml_int64_of_string):
        (int_of_base):
        (parse_format):
        (finish_formatting):
        (caml_format_int):
        (caml_int64_format):
        (caml_format_float):
        (float_of_string):
        (div):
        (mod_):
        (caml_bswap16):
        (caml_int32_bswap):
        (imul):
        (neg_signed):
        (not):
        (eq):
        (neg):
        (lsl_):
        (lsr_):
        (asr_):
        (is_zero):
        (mul):
        (swap):
        (xor):
        (or_):
        (and_):
        (ge):
        (lt):
        (gt):
        (le):
        (to_float):
        (of_float):
        (div_mod):
        (compare):
        (of_int32):
        (to_int32):
        (to_hex.aux):
        (to_hex):
        (discard_sign):
        (float_of_bits):
        (bits_of_float.to_nat):
        (bits_of_float):
        (get64):
        (erase_rel):
        (concat_fmtty):
        (concat_fmt):
        (create_char_set):
        (add_in_char_set):
        (rev_char_set):
        (is_in_char_set):
        (prec_of_prec_opt):
        (param_format_of_ignored_format):
        (buffer_check_size):
        (buffer_add_char):
        (buffer_add_string):
        (buffer_contents):
        (char_of_iconv):
        (char_of_fconv):
        (char_of_counter):
        (print_char):
        (set while.set var):
        (set while.set else):
        (set var):
        (set else):
        (set print_char):
        (set if):
        (bprint_padty):
        (bprint_ignored_flag):
        (bprint_pad_opt):
        (bprint_padding):
        (bprint_precision):
        (bprint_iconv_flag):
        (bprint_int_fmt):
        (bprint_altint_fmt):
        (bprint_fconv_flag):
        (bprint_float_fmt):
        (string_of_formatting_lit):
        (string_of_formatting_gen):
        (bprint_char_literal):
        (bprint_string_literal):
        (bprint_fmtty):
        (int_of_custom_arity):
        (bprint_fmt):
        (string_of_fmt):
        (symm):
        (fmtty_rel_det):
        (trans):
        (fmtty_of_formatting_gen):
        (fmtty_of_fmt):
        (fmtty_of_custom):
        (fmtty_of_padding_fmtty):
        (fmtty_of_precision_fmtty):
        (type_padding):
        (type_padprec):
        (type_ignored_param_one):
        (type_format_gen):
        (type_ignored_format_substitution):
        (type_format):
        (recast):
        (fix_padding):
        (fix_int_precision):
        (string_to_caml_string):
        (format_of_iconv):
        (format_of_aconv):
        (format_of_fconv):
        (convert_int):
        (convert_int32):
        (convert_nativeint):
        (convert_int64):
        (else.is_valid):
        (convert_float):
        (format_caml_char):
        (string_of_fmtty):
        (else.switch.):
        (else.switch.k.prime):
        (else.switch.else.):
        (else.switch.else.k.prime.1):
        (make_printf):
        (make_from_fmtty):
        (make_invalid_arg):
        (make_string_padding):
        (make_int_padding_precision):
        (make_custom):
        (output_acc):
        (bufput_acc):
        (strput_acc):
        (failwith_message.k):
        (failwith_message):
        (open_box_of_string.else.invalid_box):
        (open_box_of_string.else.parse_spaces):
        (open_box_of_string.else.parse_lword):
        (open_box_of_string.else.parse_int):
        (open_box_of_string):
        (make_padding_fmt_ebb):
        (make_precision_fmt_ebb):
        (make_padprec_fmt_ebb):
        (invalid_format_message):
        (invalid_format_without):
        (expected_character):
        (compute_int_conv):
        (incompatible_flag):
        (parse_positive):
        (parse_conv):
        (parse_after_precision):
        (else.parse_literal):
        (parse_after_padding):
        (parse_literal):
        (parse_after_at):
        (add_literal):
        (parse_spaces):
        (parse_integer):
        (compute_float_conv):
        (search_subformat_end):
        (check_no_0):
        (opt_of_pad):
        (get_prec_opt):
        (else.switch.case.99.char_format):
        (else.switch.scan_format):
        (parse_conversion):
        (set_flag):
        (parse_flags):
        (is_int_base):
        (counter_of_char):
        (add_range):
        (fail_single_percent):
        (parse_char_set_after_char):
        (parse_char_set_content):
        (parse_char_set_start):
        (parse_char_set):
        (check_open_box):
        (parse_tag):
        (fmt_ebb_of_string):
        (format_of_string_fmtty):
        (format_of_string_format):
        (caret):
        (caml_ml_open_descriptor_in):
        (caml_ml_open_descriptor_out):
        (caml_ml_flush):
        (node_std_output):
        (caml_ml_output_char):
        (caml_ml_input):
        (caml_ml_input_char):
        (caml_ml_out_channels_list):
        (fail):
        (caml_lex_array):
        (caml_lex_engine):
        (caml_lex_run_mem):
        (caml_lex_run_tag):
        (caml_new_lex_engine):
        (caml_obj_dup):
        (caml_obj_truncate):
        (caml_lazy_make_forward):
        (caml_update_dummy):
        (caml_int_compare):
        (caml_compare):
        (caml_equal):
        (caml_notequal):
        (caml_greaterequal):
        (caml_lessequal):
        (else.aux):
        (caml_get_public_method):
        (caml_parse_engine):
        (caml_set_parser_trace):
        (js_string_of_char):
        (caml_string_get):
        (caml_create_string):
        (caml_string_compare):
        (caml_fill_string):
        (caml_blit_string):
        (caml_blit_bytes):
        (bytes_of_string):
        (bytes_to_string):
        (caml_string_of_char_array):
        (caml_is_printable):
        (caml_string_get16):
        (caml_string_get32):
        (repeat):
        (chr):
        (app):
        (js):
        (curry_1):
        (_1):
        (js1):
        (__1):
        (curry_2):
        (_2):
        (js2):
        (__2):
        (curry_3):
        (_3):
        (js3):
        (__3):
        (curry_4):
        (_4):
        (js4):
        (__4):
        (curry_5):
        (_5):
        (js5):
        (__5):
        (curry_6):
        (_6):
        (js6):
        (__6):
        (curry_7):
        (_7):
        (js7):
        (__7):
        (curry_8):
        (_8):
        (js8):
        (__8):
        (stream):
        (eos):
        (skip):
        (read):
        (peek):
        (string_of_byte):
        (position):
        (region):
        (error):
        (guard):
        (get 1):
        (get expect):
        (get illegal):
        (at):
        (u32):
        (u64):
        (get require):
        (vuN):
        (get var):
        (vsN):
        (vu32):
        (vs32):
        (vs64):
        (f32):
        (f64):
        (len32):
        (string):
        (opt):
        (vec):
        (sized):
        (value_type):
        (elem_type):
        (stack_type):
        (table_type):
        (memory_type):
        (mutability.get if):
        (mutability):
        (instr.get if):
        (instr_block):
        (const):
        (id):
        (section):
        (type_section):
        (import_kind.get if):
        (import_section):
        (func_section):
        (table_section):
        (memory_section):
        (global):
        (global_section):
        (export_kind.get if):
        (export_section):
        (start_section):
        (local):
        (code):
        (code_section):
        (table_segment):
        (elem_section):
        (memory_segment):
        (data_section):
        (partial_arg.1):
        (custom):
        (custom_section):
        (iterate):
        (decode):
        (patch):
        (encode.u8):
        (encode.u16):
        (encode.u32):
        (encode.vu64):
        (encode.vs64):
        (encode.vu32):
        (encode.len):
        (encode.bool):
        (encode.string):
        (encode.vec):
        (encode.gap32):
        (encode.patch_gap32):
        (encode.value_type):
        (encode.stack_type):
        (encode.func_type):
        (encode.limits):
        (encode.table_type):
        (encode.memory_type):
        (encode.global_type):
        (encode.memop):
        (encode):
        (encode.instr):
        (encode.const):
        (encode.section):
        (encode.type_section):
        (encode.import):
        (encode.import_section):
        (encode.func):
        (encode.func_section):
        (encode.table):
        (encode.table_section):
        (encode.memory):
        (encode.memory_section):
        (encode.global):
        (encode.global_section):
        (encode.export_kind):
        (encode.export):
        (encode.export_section):
        (encode.start_section):
        (encode.combine):
        (encode.compress):
        (encode.local):
        (encode.code):
        (encode.code_section):
        (encode.segment):
        (encode.table_segment):
        (encode.elem_section):
        (encode.memory_segment):
        (encode.module_):
        (Make.warn):
        (Make.error):
        (Make):
        (print_nan_significand_digits):
        (Make.of_bits):
        (Make.to_bits):
        (Make.is_nan):
        (Make.canonicalize_nan):
        (Make.determine_binary_nan):
        (Make.determine_unary_nan):
        (Make.binary):
        (Make.unary):
        (Make.add):
        (Make.sub):
        (Make.mul):
        (Make.div):
        (Make.sqrt):
        (Make.ceil):
        (Make.floor):
        (Make.trunc):
        (Make.nearest):
        (Make.min):
        (Make.max):
        (Make.abs):
        (Make.neg):
        (Make.copysign):
        (Make.eq):
        (Make.ne):
        (Make.lt):
        (Make.gt):
        (Make.le):
        (Make.ge):
        (Make.of_signless_string):
        (Make.of_string):
        (Make.to_string):
        (add_queue):
        (peek_queue):
        (take_queue):
        (pp_enqueue):
        (pp_clear_queue):
        (pp_output_string):
        (break_new_line):
        (break_same_line):
        (pp_force_break_line):
        (switch.add_tab):
        (else.switch.find):
        (format_pp_token):
        (advance_left):
        (enqueue_advance):
        (enqueue_string_as):
        (set_size):
        (scan_push):
        (pp_open_box_gen):
        (pp_close_box):
        (pp_open_tag):
        (pp_close_tag):
        (pp_set_print_tags):
        (pp_set_mark_tags):
        (pp_get_print_tags):
        (pp_get_mark_tags):
        (pp_set_tags):
        (pp_get_formatter_tag_functions):
        (pp_set_formatter_tag_functions):
        (pp_rinit):
        (pp_flush_queue):
        (pp_print_as_size):
        (pp_print_string):
        (pp_print_int):
        (pp_print_float):
        (pp_print_bool):
        (pp_open_hbox):
        (pp_open_vbox):
        (pp_open_hvbox):
        (pp_open_hovbox):
        (pp_open_box):
        (pp_print_newline):
        (pp_print_flush):
        (pp_force_newline):
        (pp_print_if_newline):
        (pp_print_break):
        (pp_print_space):
        (pp_print_cut):
        (pp_open_tbox):
        (pp_close_tbox):
        (pp_print_tbreak):
        (pp_print_tab):
        (pp_set_tab):
        (pp_print_list):
        (flush):
        (pp_print_text):
        (pp_set_max_boxes):
        (pp_get_max_boxes):
        (pp_over_max_boxes):
        (pp_get_ellipsis_text):
        (pp_limit):
        (pp_set_max_indent):
        (pp_get_max_indent):
        (pp_set_margin):
        (pp_get_margin):
        (pp_set_formatter_out_functions):
        (pp_get_formatter_out_functions):
        (pp_set_formatter_output_functions):
        (pp_get_formatter_output_functions):
        (pp_set_all_formatter_output_functions):
        (pp_get_all_formatter_output_functions):
        (display_newline):
        (display_blanks):
        (state.16):
        (state.17):
        (state.18):
        (state.19):
        (pp_set_formatter_out_channel):
        (default_pp_mark_open_tag):
        (default_pp_mark_close_tag):
        (default_pp_print_open_tag):
        (default_pp_print_close_tag):
        (pp_make_formatter):
        (ppf.18):
        (ppf.19):
        (make_formatter):
        (formatter_of_out_channel):
        (formatter_of_buffer):
        (flush_str_formatter):
        (flush_buf_formatter):
        (open_hbox):
        (open_vbox):
        (open_hvbox):
        (open_hovbox):
        (open_box):
        (close_box):
        (open_tag):
        (close_tag):
        (print_as):
        (print_string):
        (print_int):
        (print_float):
        (print_bool):
        (print_cut):
        (print_space):
        (force_newline):
        (print_flush):
        (print_newline):
        (print_if_newline):
        (open_tbox):
        (close_tbox):
        (print_tbreak):
        (set_tab):
        (print_tab):
        (set_margin):
        (get_margin):
        (set_max_indent):
        (get_max_indent):
        (set_max_boxes):
        (get_max_boxes):
        (over_max_boxes):
        (set_ellipsis_text):
        (get_ellipsis_text):
        (set_formatter_out_channel):
        (set_formatter_out_functions):
        (get_formatter_out_functions):
        (set_formatter_output_functions):
        (get_formatter_output_functions):
        (set_all_formatter_output_functions):
        (get_all_formatter_output_functions):
        (set_formatter_tag_functions):
        (get_formatter_tag_functions):
        (set_print_tags):
        (get_print_tags):
        (set_mark_tags):
        (get_mark_tags):
        (set_tags):
        (compute_tag):
        (output_formatting_lit):
        (kfprintf):
        (ikfprintf):
        (fprintf):
        (ifprintf):
        (printf):
        (eprintf):
        (k.prime):
        (ksprintf):
        (sprintf):
        (asprintf.k.prime):
        (asprintf):
        (k):
        (bprintf):
        (succ):
        (pred):
        (abs):
        (lognot):
        (Make.cmp_u):
        (Make.divrem_u):
        (Make.div_s):
        (Make.div_u):
        (Make.rem_s):
        (Make.rem_u):
        (Make.shift):
        (Make.shl):
        (Make.shr_s):
        (Make.shr_u):
        (Make.clamp_rotate_count):
        (Make.rotl):
        (Make.rotr):
        (Make.loop):
        (Make.clz):
        (Make.ctz):
        (Make.popcnt):
        (Make.eqz):
        (Make.lt_u):
        (Make.le_u):
        (Make.gt_u):
        (Make.ge_u):
        (Make.of_int_u):
        (Make.to_string_u):
        (Make.require):
        (Make.dec_digit):
        (Make.hex_digit):
        (Make.parse_int):
        (Make.of_string_s):
        (Make.of_string_u):
        (convert_pos):
        (error_nest):
        (text):
        (intop):
        (floatop):
        (numop):
        (memsz):
        (ext):
        (token.else.switch):
        (token.else.switch.):
        (token):
        (__ocaml_lex_comment_rec):
        (engine):
        (new_engine):
        (from_function):
        (from_channel):
        (from_string):
        (lexeme):
        (sub_lexeme):
        (sub_lexeme_opt):
        (sub_lexeme_char):
        (sub_lexeme_char_opt):
        (lexeme_char):
        (lexeme_start):
        (lexeme_end):
        (lexeme_start_p):
        (lexeme_end_p):
        (new_line):
        (flush_input):
        (take):
        (drop):
        (last):
        (split_last):
        (index_of):
        (index_of_int32):
        (dim):
        (set 1):
        (get 2):
        (log2):
        (is_power_of_two):
        (loop):
        (breakup):
        (hd):
        (tl):
        (rev_append):
        (rev):
        (flatten):
        (rev_map):
        (map2):
        (rev_map2):
        (iter2):
        (fold_left2):
        (fold_right2):
        (for_all):
        (exists):
        (for_all2):
        (exists2):
        (mem):
        (memq):
        (assoc):
        (assq):
        (mem_assoc):
        (mem_assq):
        (remove_assoc):
        (remove_assq):
        (find):
        (find_all):
        (partition):
        (split):
        (combine):
        (chop):
        (rev_sort):
        (sort_uniq):
        (Make.height):
        (Make.create):
        (Make.singleton):
        (Make.bal):
        (Make.is_empty):
        (Make.find):
        (Make.mem):
        (Make.min_binding):
        (Make.max_binding):
        (Make.remove_min_binding):
        (Make.remove):
        (Make.iter):
        (Make.map):
        (Make.mapi):
        (Make.fold):
        (Make.for_all):
        (Make.exists):
        (Make.add_min_binding):
        (Make.add_max_binding):
        (Make.join):
        (Make.concat):
        (Make.concat_or_join):
        (Make.split):
        (Make.merge):
        (Make.filter):
        (Make.partition):
        (Make.cons_enum):
        (Make.compare):
        (Make.equal):
        (Make.cardinal):
        (Make.bindings_aux):
        (Make.bindings):
        (double_field):
        (set_double_field):
        (marshal):
        (unmarshal):
        (extension_slot):
        (extension_name):
        (extension_id):
        (i32_const):
        (i64_const):
        (f32_const):
        (f64_const):
        (block):
        (br):
        (br_if):
        (br_table):
        (if_):
        (call):
        (call_indirect):
        (get_local):
        (set_local):
        (tee_local):
        (get_global):
        (set_global):
        (i32_load):
        (i64_load):
        (f32_load):
        (f64_load):
        (i32_load8_s):
        (i32_load8_u):
        (i32_load16_s):
        (i32_load16_u):
        (i64_load8_s):
        (i64_load8_u):
        (i64_load16_s):
        (i64_load16_u):
        (i64_load32_s):
        (i64_load32_u):
        (i32_store):
        (i64_store):
        (f32_store):
        (f64_store):
        (i32_store8):
        (i32_store16):
        (i64_store8):
        (i64_store16):
        (i64_store32):
        (parse):
        (string_to):
        (string_to_script):
        (string_to_module):
        (parse_error):
        (position_to_pos):
        (positions_to_region):
        (ati):
        (nat):
        (nat32):
        (empty_context):
        (enter_func):
        (type_):
        (lookup):
        (label):
        (anon_type):
        (bind):
        (bind_func):
        (bind_local):
        (bind_global):
        (bind_table):
        (bind_memory):
        (anon):
        (anon_func):
        (anon_locals):
        (anon_global):
        (anon_table):
        (anon_memory):
        (anon_label):
        (explicit_sig):
        (inline_type):
        (yyact):
        (script1):
        (module1):
        (grow_stacks):
        (clear_parser):
        (current_lookahead_fun):
        (catch.else.current_lookahead_fun.0):
        (yyparse):
        (peek_val):
        (symbol_start_pos):
        (symbol_end_pos):
        (rhs_start_pos):
        (rhs_end_pos):
        (symbol_start):
        (symbol_end):
        (rhs_start):
        (rhs_end):
        (is_current_lookahead):
        (failwith):
        (invalid_arg):
        (min):
        (max):
        (lnot):
        (char_of_int):
        (string_of_bool):
        (bool_of_string):
        (string_of_int):
        (valid_float_lexem):
        (string_of_float):
        (open_out_gen):
        (open_out):
        (open_out_bin):
        (flush_all):
        (output_bytes):
        (output_string):
        (output):
        (output_substring):
        (output_value):
        (close_out):
        (close_out_noerr):
        (open_in_gen):
        (open_in):
        (open_in_bin):
        (input):
        (else.r):
        (unsafe_really_input):
        (really_input):
        (really_input_string):
        (input_line.build_result):
        (input_line.n):
        (input_line.scan):
        (input_line):
        (close_in_noerr):
        (print_bytes):
        (print_endline):
        (prerr_char):
        (prerr_string):
        (prerr_bytes):
        (prerr_int):
        (prerr_float):
        (prerr_endline):
        (prerr_newline):
        (read_line):
        (read_int):
        (read_float):
        (string_of_format):
        (at_exit.exit_function.0):
        (at_exit):
        (do_at_exit):
        (exit):
        (output_binary_int):
        (seek_out):
        (pos_out):
        (out_channel_length):
        (set_binary_mode_out):
        (input_binary_int):
        (input_value):
        (seek_in):
        (pos_in):
        (in_channel_length):
        (close_in):
        (set_binary_mode_in):
        (LargeFile_000):
        (LargeFile_001):
        (LargeFile_002):
        (LargeFile_003):
        (LargeFile_004):
        (LargeFile_005):
        (kbprintf):
        (plus):
        (pp):
        (print):
        (string_of_pos):
        (string_of_region):
        (escaped.needs_escape):
        (set_signal):
        (catch_break):
        (size):
        (string_of_value_type):
        (string_of_value_types):
        (string_of_elem_type):
        (string_of_limits):
        (string_of_table_type):
        (string_of_global_type):
        (string_of_stack_type):
        (string_of_func_type):
        (type_of):
        (default_value):
        (value_of_bool):
        (string_of_values):
        (to_value):
        (of_value):
        (g):
        (binary):
        (bytes):
        * wasm/references-spec-tests/select.wast.js: Added.
        * wasm/references/table_instructions_parse_unreachable.js:
        (invalidAnnotatedSelectUnreachable):
        * wasm/wasm.json:

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

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

        Reviewed by Mark Lam.

        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Array/prototype/reverse/array-has-one-entry.js: Added.
        * test262/test/built-ins/Array/prototype/sort/bug_596_1.js:
        * test262/test/built-ins/Math/max/Math.max_each-element-coerced.js: Added.
        (const.n.valueOf):
        * test262/test/built-ins/Math/min/Math.min_each-element-coerced.js: Added.
        (const.n.valueOf):
        * test262/test/built-ins/String/prototype/at/prop-desc.js:
        * test262/test/built-ins/TypedArray/prototype/at/prop-desc.js:
        * test262/test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric-throw.js:
        * test262/test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric.js:
        * test262/test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-symbol-throws.js:
        * test262/test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-set-value.js:
        * test262/test/built-ins/TypedArray/prototype/fill/fill-values-non-numeric.js:
        * test262/test/built-ins/TypedArray/prototype/fill/fill-values-symbol-throws.js:
        * test262/test/built-ins/TypedArray/prototype/fill/return-abrupt-from-set-value.js:
        * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js:
        (testWithTypedArrayConstructors.valueOf):
        (testWithTypedArrayConstructors):
        (testWithTypedArrayConstructors.detachAndReturnIndex): Deleted.
        * test262/test/built-ins/TypedArray/prototype/map/return-new-typedarray-conversion-operation-consistent-nan.js:
        * test262/test/built-ins/TypedArray/prototype/map/return-new-typedarray-conversion-operation.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobigint64.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobiguint64.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/boolean-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/null-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/number-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-nan-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/symbol-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-tostring.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/undefined-tobigint.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/conversion-operation-consistent-nan.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/conversion-operation.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-to-primitive-typeerror.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-to-primitive.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-tostring.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-valueof-typeerror.js:
        * test262/test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-valueof.js:
        * test262/test/built-ins/TypedArrayConstructors/from/BigInt/source-value-is-symbol-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/from/nan-conversion.js:
        * test262/test/built-ins/TypedArrayConstructors/from/source-value-is-symbol-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/desc-value-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/set-value.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/desc-value-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-realm.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/set-value.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/indexed-value.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/conversion-operation-consistent-nan.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/conversion-operation.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer-realm.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/indexed-value.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/of/BigInt/argument-is-symbol-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/of/BigInt/new-instance.js:
        * test262/test/built-ins/TypedArrayConstructors/of/argument-is-symbol-throws.js:
        * test262/test/built-ins/TypedArrayConstructors/of/nan-conversion.js:
        * test262/test/built-ins/TypedArrayConstructors/of/new-instance.js:
        * test262/test/built-ins/parseInt/S15.1.2.2_A2_T2.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-x-greater-than-y-throws.js:
        * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-x-greater-than-y-throws.js:
        * test262/test/language/arguments-object/mapped/enumerable-configurable-accessor-descriptor.js: Added.
        (set _v):
        * test262/test/language/arguments-object/mapped/nonconfigurable-descriptors-define-failure.js: Added.
        (get 3):
        * test262/test/language/arguments-object/mapped/writable-enumerable-configurable-descriptor.js: Added.
        * test262/test/language/destructuring/binding/syntax/destructuring-array-parameters-function-arguments-length.js: Added.
        (assert.sameValue):
        (assert.sameValue.async a):
        * test262/test/language/destructuring/binding/syntax/destructuring-object-parameters-function-arguments-length.js: Added.
        (assert.sameValue):
        * test262/test/language/expressions/async-function/named-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-function/named-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-function/named-reassign-fn-name-in-body.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body.js: Added.
        (let.ref.async BindingIdentifier):
        (let.ref):
        * test262/test/language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref):
        * test262/test/language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref):
        * test262/test/language/expressions/function/named-no-strict-reassign-fn-name-in-body.js: Added.
        (let.ref):
        * test262/test/language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref):
        * test262/test/language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref):
        * test262/test/language/expressions/function/named-strict-error-reassign-fn-name-in-body.js: Added.
        (let.ref):
        * test262/test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref):
        * test262/test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref):
        * test262/test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body.js: Added.
        (let.ref):
        * test262/test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body-in-arrow.js: Added.
        (let.ref):
        * test262/test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body-in-eval.js: Added.
        (let.ref):
        * test262/test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body.js: Added.
        (let.ref):
        * test262/test262-Revision.txt:

2020-12-11  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add table.init
        https://bugs.webkit.org/show_bug.cgi?id=219297

        Reviewed by Yusuke Suzuki.

        Added reference types spec tests for element section, table.init
        and elem.drop:
        https://github.com/WebAssembly/reference-types/blob/master/test/core/elem.wast,
        https://github.com/WebAssembly/reference-types/blob/master/test/core/table_init.wast.
        Added tests for checking table instructions immediates when they are unreachable.

        * wasm.yaml:
        * wasm/references-spec-tests/elem.wast.js: Added.
        * wasm/references-spec-tests/ref_is_null.js: Removed.
        * wasm/references-spec-tests/ref_is_null.wast.js: Added.
        * wasm/references-spec-tests/ref_null.js: Removed.
        * wasm/references-spec-tests/ref_null.wast.js: Added.
        * wasm/references-spec-tests/table_copy.wast.js: Renamed from JSTests/wasm/references-spec-tests/table_copy.js.
        * wasm/references-spec-tests/table_init.wast.js: Added.
        * wasm/spec-harness/wasm-constants.js:
        (hostref):
        * wasm/wasm.json:

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

        Align [[DefineOwnProperty]] method of mapped arguments object with the spec
        https://bugs.webkit.org/show_bug.cgi?id=219750

        Reviewed by Yusuke Suzuki.

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

2020-12-09  Michael Catanzaro  <mcatanzaro@gnome.org>

        stress/intl-datetimeformat-formatrange.js and stress/intl-datetimeformat-formatrange-relevant-extensions.js fail with ICU 65.1
        https://bugs.webkit.org/show_bug.cgi?id=218763
        <rdar://problem/71257288>

        Reviewed by Yusuke Suzuki.

        There are strange differences between the output of similar ICU versions on macOS compared
        to Linux, for reasons unknown. Make these tests more robust to different output by stripping
        all "thin space" characters from the actual results and replacing them with regular spaces.
        The thin space characters are only used by older versions of ICU, but it seems that the
        versions in which it is used either differ between macOS and Linux, or else change within a
        particular major version, so it's hard to use ICU version checks for this.

        * stress/intl-datetimeformat-formatrange-relevant-extensions-ja.js:
        (shouldBe):
        * stress/intl-datetimeformat-formatrange-relevant-extensions.js:
        (shouldBe):
        * stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js:
        * stress/intl-datetimeformat-formatrange.js:
        (shouldBe):
        (test):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js:
        (shouldBe):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js:
        (shouldBe):
        * stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js:
        * stress/intl-datetimeformat-formatrangetoparts.js:
        (shouldBe):

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

        Align %TypedArray% constructor behavior with spec
        https://bugs.webkit.org/show_bug.cgi?id=219527

        Reviewed by Yusuke Suzuki.

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

        * wasm/fuzz/memory.js:
        * wasm/js-api/test_Data.js:
        Fix non-conforming typed array usage.

2020-12-07  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add support for table.copy
        https://bugs.webkit.org/show_bug.cgi?id=219427

        Reviewed by Yusuke Suzuki.

        Add support for table.copy from reference types proposal:
        https://webassembly.github.io/reference-types/core/syntax/instructions.html#table-instructions.
        Add the tests from above spec.

        * wasm/references-spec-tests/table_copy.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:
        * wasm/wasm.json:

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

        [JSC] get / set for object literal and class should not be escaped
        https://bugs.webkit.org/show_bug.cgi?id=219576

        Reviewed by Alexey Shvayka.

        * stress/escaped-getter-setter-in-class.js: Added.
        (testSyntaxError):
        (testSyntaxError.String.raw.A.prototype.u0067.u0065.u0074.m):
        (testSyntaxError.String.raw.A):
        (testSyntaxError.String.raw.A.prototype.u0073.u0065.u0074.m):
        * stress/escaped-getter-setter-in-object.js: Added.
        (testSyntaxError):
        (testSyntaxError.String.raw.u0067.u0065.u0074.m):
        (testSyntaxError.String.raw.u0073.u0065.u0074.m):
        * test262/expectations.yaml:

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

        [JSC] Accept escaped keywords for class and object property names
        https://bugs.webkit.org/show_bug.cgi?id=219575

        Reviewed by Alexey Shvayka.

        * stress/syntax-error-if-escaped-keyword-used-as-target-object-pattern.js: Added.
        (testSyntaxError):
        * test262/expectations.yaml:

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

        %TypedArray%#slice shouldn't care about source buffer detachment if there's nothing to copy
        https://bugs.webkit.org/show_bug.cgi?id=219451

        Reviewed by Yusuke Suzuki.

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

2020-12-02  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Add support for active mods in element section
        https://bugs.webkit.org/show_bug.cgi?id=219192

        Reviewed by Yusuke Suzuki.
        
        Fix builder dsl to produce the right element section.
        It produces correct wasm code for the previous spec and for the ref-types spec because the core spec is binary compatible with the ref-types.
        https://webassembly.github.io/reference-types/core/binary/modules.html#element-section.
        Added basic tests for the element section.


        * 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.emitters.Element):
        * wasm/references-spec-tests/ref_null.js:
        (module):
        * wasm/references/element_active_mod.js: Added.
        (module):
        (basicTest):
        (refNullExternInElemsSection):
        * wasm/references/element_parsing.js:
        * wasm/references/multitable.js:

2020-11-30  Sergey Rubanov  <chi187@gmail.com>

        Add support for the Wasm i64 sign-extension-ops proposal
        https://bugs.webkit.org/show_bug.cgi?id=218990

        Reviewed by Yusuke Suzuki.

        * wasm/spec-tests/i64.wast.js:
        * wasm/wasm.json:

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

        Unreviewd, annotate stress/bounds-checking-in-cold-loop.js with memoryLimited

        * stress/bounds-checking-in-cold-loop.js:

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

        [JSC] Use ARM atomic ops in wasm
        https://bugs.webkit.org/show_bug.cgi?id=219281

        Reviewed by Filip Pizlo.

        * wasm/threads-spec-tests/atomic-signed.wast.js:
        * wasm/threads-spec-tests/resources/atomic-signed.wast:

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

        [JSC] Add wasm atomics instructions
        https://bugs.webkit.org/show_bug.cgi?id=218954

        Reviewed by Filip Pizlo.

        * wasm.yaml:
        * wasm/Builder.js:
        (const._importMemoryContinuation):
        (export.default.Builder.prototype._registerSectionBuilders.const.section.in.WASM.description.section.switch.section.case.string_appeared_here.this.section):
        * wasm/Builder_WebAssemblyBinary.js:
        (const.putResizableLimits):
        (const.emitters.Import):
        (const.emitters.Memory):
        * wasm/function-tests/trap-load-shared.js:
        * wasm/function-tests/trap-store-shared.js:
        * wasm/stress/atomic-decrement.js: Added.
        (i.agent.start.import.string_appeared_here.then):
        (i.async error):
        * wasm/stress/atomic-increment.js: Added.
        (i.agent.start.import.string_appeared_here.then):
        (i.async error):
        * wasm/stress/memory-fence.js: Added.
        (async try):
        (catch):
        * wasm/threads-spec-tests/atomic-signed.wast.js: Added.
        * wasm/threads-spec-tests/atomic.wast.js: Added.
        * wasm/threads-spec-tests/memory.wast.js: Added.
        * wasm/threads-spec-tests/resources/atomic-signed.wast: Added.
        * wasm/wasm.json:

2020-11-19  Xan López  <xan@igalia.com>

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

        Reviewed by Yusuke Suzuki.

        Copy V8 tests for static private fields and add the test262
        flag. Also add a couple more of our own tests for the sake of
        completeness.

        * stress/class-fields-static-private-harmony.js: Added, with a couple additional tests.
        * stress/resources/harmony-support.js:
        (assertDoesNotThrow): added.
        * test262/config.yaml:

2020-11-18  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Remove subtyping rule for externref and funcref
        https://bugs.webkit.org/show_bug.cgi?id=218885

        Reviewed by Yusuke Suzuki.

        Make funcref is not a subtype of externref.
        The spec: https://webassembly.github.io/reference-types/core/
        The PR for removing subtype from the spec:
        https://github.com/WebAssembly/reference-types/pull/87.

        * wasm/references/func_ref.js:
        (assert.eq.instance.exports.fix.fun):
        (assert.eq.instance.exports.fix):
        * wasm/references/validation.js:

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

        [JSC] Reinstate String#at
        https://bugs.webkit.org/show_bug.cgi?id=219124

        Reviewed by Yusuke Suzuki.

        * stress/at-method.js: Re-add tests.
        * test262/config.yaml: Re-enable feature.
        * test262/expectations.yaml:
        "at/prop-desc.js" failures are due to a typo; will be fixed in https://github.com/tc39/test262/pull/2908.

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

        [JSC] Improve Wasm binary test coverage
        https://bugs.webkit.org/show_bug.cgi?id=204843

        Reviewed by Darin Adler.

        * wasm/function-tests/grow-memory.js:
        (binaryShouldNotParse):
        * wasm/spec-tests/binary-leb128.wast.js:
        * wasm/spec-tests/binary.wast.js:
        * wasm/wasm.json:

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

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

        Reviewed by Yusuke Suzuki.

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

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

        Unreviewed, relanding r269940
        https://bugs.webkit.org/show_bug.cgi?id=219076

        * wasm/function-tests/trap-load-shared.js: Added.
        (wasmFrameCountFromError):
        * wasm/function-tests/trap-store-shared.js: Added.
        * wasm/js-api/test_memory.js:
        (binaryShouldNotParse):
        * wasm/stress/shared-memory-errors.js: Added.
        (assert.throws):
        * wasm/stress/shared-wasm-memory-buffer.js: Added.

2020-11-18  Xan Lopez  <xan@igalia.com>

        [JSC] Import V8 private instance fields tests
        https://bugs.webkit.org/show_bug.cgi?id=219075

        Reviewed by Yusuke Suzuki.

        * stress/class-fields-private-harmony.js: Added.

2020-11-18  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r269940.
        https://bugs.webkit.org/show_bug.cgi?id=219076

        caused seemingly-infinite build time regression

        Reverted changeset:

        "[JSC] Implement WebAssembly.Memory with shared"
        https://bugs.webkit.org/show_bug.cgi?id=218693
        https://trac.webkit.org/changeset/269940

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

        [JSC] Implement WebAssembly.Memory with shared
        https://bugs.webkit.org/show_bug.cgi?id=218693

        Reviewed by Saam Barati.

        * wasm/function-tests/trap-load-shared.js: Added.
        (wasmFrameCountFromError):
        * wasm/function-tests/trap-store-shared.js: Added.
        * wasm/js-api/test_memory.js:
        (binaryShouldNotParse):
        * wasm/stress/shared-memory-errors.js: Added.
        (assert.throws):
        * wasm/stress/shared-wasm-memory-buffer.js: Added.

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

        [JSC] Enable static public class fields
        https://bugs.webkit.org/show_bug.cgi?id=219058

        Reviewed by Saam Barati.

        * 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-private-use-eval.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/class-fields-with-special-names.js:
        * stress/generator-syntax.js:
        * stress/method-name.js:
        * stress/private-name-access-in-computed-property.js:
        * test262/config.yaml:

2020-11-17  Sergey Rubanov  <chi187@gmail.com>

        Add support for the Wasm i32 sign-extension-ops proposal
        https://bugs.webkit.org/show_bug.cgi?id=210302

        Reviewed by Yusuke Suzuki.

        * wasm/spec-tests/i32.wast.js:
        * wasm/spec-tests/i64.wast.js:
        * wasm/wasm.json:

2020-11-17  Xan López  <xan@igalia.com>

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

        Reviewed by Yusuke Suzuki.

        Enable static public fields, and import new stress tests from the
        V8 project. Also split the support code into a separate file
        (harmony-support.js) to avoid duplication.

        * test262/config.yaml: enable static public fields.
        * stress/class-fields-harmony.js: use the new support file.
        * stress/class-fields-static-harmony.js: Added.
        * stress/resources/harmony-support.js: Added.

2020-11-15  Sergey Rubanov  <chi187@gmail.com>

        [JSC] Update wasm spec tests
        https://bugs.webkit.org/show_bug.cgi?id=218940

        Reviewed by Yusuke Suzuki.

        Spec test commit revision number: 5475b7015684a07ba69762f8438e3bcff2647686

        * wasm.yaml:
        * wasm/spec-tests/address.wast.js:
        * wasm/spec-tests/binary-leb128.wast.js:
        * wasm/spec-tests/binary.wast.js:
        * wasm/spec-tests/block.wast.js:
        * wasm/spec-tests/br.wast.js:
        * wasm/spec-tests/break-drop.wast.js: Removed.
        * wasm/spec-tests/call.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_section.wast.js: Removed.
        * wasm/spec-tests/data.wast.js:
        * wasm/spec-tests/f32.wast.js:
        * wasm/spec-tests/f64.wast.js:
        * wasm/spec-tests/fac.wast.js:
        * wasm/spec-tests/float_exprs.wast.js:
        * wasm/spec-tests/float_misc.wast.js:
        * wasm/spec-tests/func.wast.js:
        * wasm/spec-tests/get_local.wast.js: Removed.
        * wasm/spec-tests/global.wast.js: Renamed from JSTests/wasm/spec-tests/globals.wast.js.
        * wasm/spec-tests/harness/async_index.js: Added.
        (let.testNum):
        (uniqueTest):
        (assertThrows):
        (binary):
        (module):
        (assert_invalid):
        (instance):
        (exports):
        (reinitializeRegistry.get promise_test):
        (reinitializeRegistry):
        (catch):
        (assert_exhaustion):
        (get const):
        * wasm/spec-tests/harness/sync_index.js: Added.
        (let.testNum):
        (assertThrows):
        (_assert):
        (ValueResult):
        (ErrorResult):
        (Result.prototype.isError):
        (reinitializeRegistry.let.handler.get return):
        (binary):
        (module):
        * wasm/spec-tests/i32.wast.js:
        * wasm/spec-tests/i64.wast.js:
        * wasm/spec-tests/if.wast.js:
        * wasm/spec-tests/imports.wast.js:
        * wasm/spec-tests/jsapi.js: Removed.
        * wasm/spec-tests/loop.wast.js:
        * wasm/spec-tests/memory.wast.js:
        * wasm/spec-tests/resizing.wast.js: Removed.
        * wasm/spec-tests/set_local.wast.js: Removed.
        * wasm/spec-tests/stack.wast.js:
        * wasm/spec-tests/store_retval.wast.js: Removed.
        * wasm/spec-tests/table.wast.js: Added.
        * wasm/spec-tests/tee_local.wast.js: Removed.
        * wasm/spec-tests/type.wast.js:
        * wasm/spec-tests/typecheck.wast.js: Removed.

2020-11-13  Xan López  <xan@igalia.com>

        [JSC] Use symbols as identifiers for class fields computed names storage
        https://bugs.webkit.org/show_bug.cgi?id=216172

        Reviewed by Yusuke Suzuki.

        Use private symbols for the property keys of the class fields with
        computed names. This is cleaner than using raw numeric identifiers and
        will be less cumbersome when we add static fields. It also prevents
        potential collisions if other features want to store data in the class
        scope.

        * stress/class-fields-harmony.js: new test, make sure
        setFunctionName works properly with computed fields.

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

        Unreviewed, skip new ICU related tests in MIPS and ARMv7 and adjust it for ICU 65
        https://bugs.webkit.org/show_bug.cgi?id=213822

        * stress/intl-datetimeformat-formatrange-relevant-extensions.js:
        * stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js:
        * stress/intl-datetimeformat-formatrange.js:
        (test):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js:
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js:
        * stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js:
        * stress/intl-datetimeformat-formatrangetoparts.js:

2020-11-13  Sergey Rubanov  <chi187@gmail.com>

        WebAssembly: opcodes for table.grow and table.size are mixed up
        https://bugs.webkit.org/show_bug.cgi?id=218644

        Reviewed by Yusuke Suzuki.

        * wasm/stress/table-grow-table-size.js: Added.
        (async test):
        * wasm/wasm.json:

2020-11-13  Sergey Rubanov  <chi187@gmail.com>

        WebAssembly: update wabt.js
        https://bugs.webkit.org/show_bug.cgi?id=218876

        Reviewed by Yusuke Suzuki.

        * wasm/libwabt.js:
        (WabtModule): Deleted.
        * wasm/regress/llint-callee-saves-with-fast-memory.js:
        (async test):
        * wasm/regress/llint-callee-saves-without-fast-memory.js:
        (async test):
        * wasm/regress/regression-with-loop.js:
        (async test):
        * wasm/regress/stack-consistency.js:
        (async test):
        * wasm/stress/js-wasm-call-many-return-types-on-stack-no-args.js:
        (async buildWat):
        (async test):
        (buildWat): Deleted.
        * wasm/stress/js-wasm-js-varying-arities.js:
        (async paramForwarder):
        (async test):
        (paramForwarder): Deleted.
        * wasm/stress/local-ref.js:
        (async test):
        * wasm/stress/loop-more-args-than-results.js:
        (async test):
        * wasm/stress/set-local-enclosed-stack.js:
        (async test):
        (assert.eq.instance.exports.foo): Deleted.
        (assert.eq): Deleted.
        * wasm/stress/top-most-enclosing-stack.js:
        (async test):
        * wasm/stress/trunc-int-min-minus-one.js:
        (async test):
        * wasm/stress/wasm-js-call-many-return-types-on-stack-no-args.js:
        (async buildWat):
        (async test):
        (buildWat): Deleted.
        * wasm/stress/wasm-js-multi-value-exception-in-iterator.js:
        (async buildWat):
        (async test):
        (buildWat.throwError): Deleted.
        (buildWat.throwErrorInIterator): Deleted.
        (buildWat.tooManyValues): Deleted.
        (buildWat.tooFewValues): Deleted.
        (buildWat): Deleted.
        * wasm/stress/wasm-wasm-call-indirect-many-return-types-on-stack.js:
        (async buildWat):
        (async test):
        (buildWat): Deleted.
        * wasm/stress/wasm-wasm-call-many-return-types-on-stack-no-args.js:
        (async buildWat):
        (async test):
        (buildWat): Deleted.
        * wasm/wabt-wrapper.js:
        (export.async compile):
        (export.compile): Deleted.

2020-11-12  Caio Lima  <ticaiolima@gmail.com>

        [Intl][ARMv7][MIPS] Skip stress/intl-datetimeformat-formatrange.js
        https://bugs.webkit.org/show_bug.cgi?id=218867

        Unreviewed test gardening.

        * stress/intl-datetimeformat-formatrange.js:

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

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

        Reviewed by Alexey Shvayka.

        One failing test is test262 bug and tracked in https://github.com/tc39/test262/pull/2898.

        * test262/expectations.yaml:
        * test262/harness/atomicsHelper.js:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/Atomics/waitAsync/bigint/true-for-timeout.js:
        * test262/test/built-ins/Atomics/waitAsync/returns-result-object-value-is-promise-resolves-to-timed-out.js:
        * test262/test/built-ins/Atomics/waitAsync/true-for-timeout.js:
        * test262/test/built-ins/Object/seal/configurable-attribute-all-own-properties-set-from-true-to-false-property-are-unaltered.js: Renamed from JSTests/test262/test/built-ins/Object/seal/object-seal-the-configurable-attribute-of-all-own-properties-of-o-are-set-from-true-to-false-and-other-attributes-of-the-property-are-unaltered.js.
        * test262/test/built-ins/Object/seal/configurable-attribute-own-accessor-property-set-from-true-to-false-property-are-unaltered.js: Renamed from JSTests/test262/test/built-ins/Object/seal/object-seal-the-configurable-attribute-of-own-accessor-property-of-o-is-set-from-true-to-false-and-other-attributes-of-the-property-are-unaltered.js.
        * test262/test/built-ins/Object/seal/seal-finalizationregistry.js:
        * test262/test/built-ins/Object/seal/seal-weakref.js:
        * test262/test/built-ins/String/prototype/split/arguments-are-objects-and-instance-is-string-first-object-have-overrided-to-string-function-and-value-of-function-that-throw-exception-second-object-have-overrided-value-of-function-that-throw-exception.js: Removed.
        * test262/test/built-ins/String/prototype/split/separator-override-tostring-limit-override-valueof-throws.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/arguments-are-objects-and-instance-is-string-first-object-have-overrided-to-string-function-second-object-have-overrided-value-of-function-that-throw-exception.js.
        * test262/test/built-ins/String/prototype/split/separator-override-tostring-limit-override-valueof-tostring-throws.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/arguments-are-objects-and-instance-is-string-first-object-have-overrided-to-string-function-second-object-have-overrided-value-of-function-and-to-string-function-that-throw-exception.js.
        * test262/test/built-ins/String/prototype/split/separator-override-tostring-limit-override-valueof-tostring.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/arguments-are-objects-and-instance-is-string-first-object-have-overrided-to-string-function-second-object-have-overrided-value-of-and-to-string-functions.js.
        * test262/test/built-ins/String/prototype/split/separator-override-tostring-limit-override-valueof.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/arguments-are-objects-and-instance-is-string-first-object-have-overrided-to-string-function-second-object-have-overrided-value-of-function.js.
        * test262/test/built-ins/String/prototype/split/separator-override-tostring-throws-limit-override-valueof-throws.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/arguments-are-objects-and-instance-is-string-first-object-have-overrided-to-string-function-that-throw-exception-second-object-have-overrided-value-of-function-that-throw-exception.js.
        * test262/test/built-ins/String/prototype/split/separator-override-valueof.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/argument-is-function-and-instance-is-string-object-object-have-overrided-to-string-and-value-of-functions.js.
        * test262/test/built-ins/String/prototype/split/transferred-to-custom.js: Added.
        (Splittable.this.toString):
        (Splittable.this.valueOf):
        (Splittable):
        * test262/test/built-ins/String/prototype/split/transferred-to-number-separator-override-tostring-returns-regexp.js: Renamed from JSTests/test262/test/built-ins/String/prototype/split/argument-is-object-and-instance-is-number-object-have-overrided-to-string-function-that-return-regexp.js.
        * test262/test/built-ins/String/prototype/split/valueOf-is-called-for-limit-argument.js: Added.
        (let.limit.toString):
        (let.limit.valueOf):
        * test262/test/built-ins/TypedArray/prototype/every/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/every/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/filter/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/filter/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/find/BigInt/predicate-may-detach-buffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/find/predicate-may-detach-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/findIndex/predicate-may-detach-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/forEach/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/forEach/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/map/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/map/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/reduce/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/reduce/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/reduceRight/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/reduceRight/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/slice/BigInt/detached-buffer-custom-ctor-other-targettype.js:
        (testWithBigIntTypedArrayConstructors.get sample): Deleted.
        * test262/test/built-ins/TypedArray/prototype/slice/detached-buffer-custom-ctor-other-targettype.js:
        (testWithTypedArrayConstructors.get sample): Deleted.
        * test262/test/built-ins/TypedArray/prototype/some/BigInt/callbackfn-detachbuffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArray/prototype/some/callbackfn-detachbuffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js:
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex-desc-configurable.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/key-is-numericindex.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex-desc-configurable.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/key-is-numericindex.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/index-prop-desc.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer.js:
        (testWithBigIntTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer-realm.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js:
        (testWithTypedArrayConstructors):
        * test262/test/intl402/DateTimeFormat/intl-legacy-constructed-symbol-on-unwrap.js: Added.
        (try.get target):
        (catch):
        * test262/test/intl402/DateTimeFormat/intl-legacy-constructed-symbol.js: Added.
        * test262/test/intl402/NumberFormat/intl-legacy-constructed-symbol-on-unwrap.js: Added.
        (try.get target):
        (catch):
        * test262/test/intl402/NumberFormat/intl-legacy-constructed-symbol.js: Added.
        * test262/test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js: Removed.
        * test262/test/language/eval-code/direct/arrow-fn-body-cntns-arguments-fn-decl-params-cntns-dflt-assignment-arrow-func-declare-arguments-assign.js: Removed.
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-1-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-2-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-3-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-4-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-5-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-6-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-7-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-8-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/literals/string/legacy-non-octal-escape-sequence-9-strict-explicit-pragma.js: Added.
        (invalid):
        * test262/test/language/module-code/export-expname-binding-string.js:
        * test262/test/language/module-code/export-expname-from-as-unpaired-surrogate.js: Added.
        * test262/test/language/module-code/export-expname-from-star-unpaired-surrogate.js: Added.
        * test262/test/language/module-code/export-expname-from-unpaired-surrogate.js: Added.
        * test262/test/language/module-code/export-expname-import-unpaired-surrogate.js: Added.
        * test262/test/language/module-code/export-expname-string-binding.js: Added.
        (foo):
        * test262/test/language/module-code/export-expname-unpaired-surrogate.js: Added.
        (Foo):
        * test262/test/language/module-code/export-expname_FIXTURE.js:
        * test262/test262-Revision.txt:

2020-11-12  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Support imm for ref.null
        https://bugs.webkit.org/show_bug.cgi?id=218744

        Reviewed by Yusuke Suzuki.
        
        Updated the Builder DSL and spec tests for ref.null extern/funcref.
        Spec is here - https://webassembly.github.io/reference-types/core/.

        * 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/LowLevelBinary.js:
        (export.default.LowLevelBinary.prototype.ref_type):
        * wasm/WASM.js:
        * wasm/references-spec-tests/ref_is_null.js:
        * wasm/references-spec-tests/ref_null.js:
        * wasm/references/externref_globals.js:
        * wasm/references/externref_modules.js:
        * wasm/references/externref_table.js:
        * wasm/references/externref_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:
        (assert.eq.instance.exports.fix):
        * wasm/references/is_null.js:
        (checkRefNullWithI32ImmType):
        * wasm/references/multitable.js:
        * wasm/wasm.json:

2020-11-12  Angelos Oikonomopoulos  <angelos@igalia.com>

        [JSC] Skip stress/lars-sab-workers.js on arm32
        https://bugs.webkit.org/show_bug.cgi?id=218797

        Reviewed by Žan Doberšek.

        The test is currently flaky on arm32 when run in bytecode-cache mode.
        Skip pending further investigation.

        * stress/lars-sab-workers.js:

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

        Unreviewed, rebaseline test262's config.yaml part 2

        test262 bot is using Catalina, it should use Big Sur. filed in [1].

        [1]: https://bugs.webkit.org/show_bug.cgi?id=218844

        * test262/config.yaml:

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

        Unreviewed, rebaseline test262's config.yaml

        test262 bot is using Catalina, it should use Big Sur. filed in [1].

        [1]: https://bugs.webkit.org/show_bug.cgi?id=218844

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

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

        Unreviewed, fix wrong tests at the final clean up
        https://bugs.webkit.org/show_bug.cgi?id=213822

        * stress/intl-datetimeformat-formatrange.js:
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js:
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt1.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt2.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt3.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt4.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt5.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.vm.icuVersion): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt6.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt7.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt8.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt9.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt10.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt11.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt12.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt13.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt14.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt15.formatRangeToParts): Deleted.
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt16.formatRangeToParts): Deleted.
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js:
        * stress/intl-datetimeformat-formatrangetoparts.js:

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

        [JSC] Implement Intl.DateTimeFormat.formatRangeToParts
        https://bugs.webkit.org/show_bug.cgi?id=213822
        <rdar://problem/69328711>

        Reviewed by Ross Kirsling.

        * stress/intl-datetimeformat-formatrange-relevant-extensions.js:
        * stress/intl-datetimeformat-formatrange-should-not-handle-gregorian-change-date.js: Added.
        (shouldBe):
        (vm.icuHeaderVersion):
        * stress/intl-datetimeformat-formatrange.js:
        (shouldThrow):
        (test):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions-ja.js: Added.
        (shouldBe):
        (compareParts):
        (shouldThrow):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt1.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt2.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt3.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt4.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt5.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.vm.icuVersion):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt6.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt7.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt8.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt9.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt10.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt11.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt12.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt13.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt14.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt15.formatRangeToParts):
        (Intl.DateTimeFormat.formatRangeToParts.compareParts.fmt16.formatRangeToParts):
        * stress/intl-datetimeformat-formatrangetoparts-relevant-extensions.js: Added.
        (shouldBe):
        (compareParts):
        (shouldThrow):
        * stress/intl-datetimeformat-formatrangetoparts-should-not-handle-gregorian-change-date.js: Added.
        (shouldBe):
        (compareParts):
        (vm.icuHeaderVersion):
        * stress/intl-datetimeformat-formatrangetoparts.js: Added.
        (shouldBe):
        (compareParts):
        (shouldThrow):
        * test262/config.yaml:
        * test262/expectations.yaml: This failure is because of CLDR data inside ICU. ICU 67 will fix them.

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

        Align %TypedArray% behavior with recent spec adjustments
        https://bugs.webkit.org/show_bug.cgi?id=218776

        Reviewed by Yusuke Suzuki.

        * stress/reflect-set.js:
        * stress/typedarray-functions-with-neutered.js:
        * stress/typedarray-includes.js:
        * stress/typedarray-indexOf.js:
        * stress/typedarray-join.js: Added.
        * stress/typedarray-lastIndexOf.js:
        Update tests.

        * test262/expectations.yaml:
        Mark a handful of test cases as temporarily failing.
        These will disappear in a future test262 update.

2020-11-10  Michael Catanzaro  <mcatanzaro@gnome.org>

        stress/intl-datetimeformat-formatrange.js and stress/intl-datetimeformat-formatrange-relevant-extensions.js fail with ICU 65.1
        https://bugs.webkit.org/show_bug.cgi?id=218763

        Reviewed by Yusuke Suzuki.

        Yesterday Red Hat upgraded its internal CI to Fedora 32 (ICU 65.1), causing
        stress/intl-datetimeformat-formatrange-relevant-extensions.js and
        stress/intl-datetimeformat-formatrange.js to begin failing. The problem is that the space
        characters used in the range format changed at some point. The current version of the test
        expects normal ASCII space characters for ICU 67 and newer, and special spaces for older
        versions of ICU.

        The test passes for me locally on Fedora 33 (ICU 67.1), so perhaps we just need to use the
        new codepath for ICU 65 and 66 as well.

        * stress/intl-datetimeformat-formatrange-relevant-extensions.js:
        * stress/intl-datetimeformat-formatrange.js:
        (test):

2020-11-09  Keith Miller  <keith_miller@apple.com>

        Add microbenchmark for FinalizationRegistry basic usage
        https://bugs.webkit.org/show_bug.cgi?id=218667

        Reviewed by Yusuke Suzuki.

        The no unregister token benchmark runs in ~40ms and the unregister
        token in ~25ms on my Mac Pro. Interestingly, it also shows that
        using an unregister token make FinalizationRegistry ~4x slower
        (total time is longer because the number of objects is 10x bigger
        in the test). This is because we have to store all the data in a
        HashMap<UnregisterToken, JSObject> rather than a Vector<JSObject>.

        * microbenchmarks/finalizationRegistryCleanup.js: Added.
        (async callback):
        * microbenchmarks/finalizationRegistryCleanupWithUnregisterToken.js: Added.
        (async callback):

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

        [JSC] Add TimeZone range cache over ICU TimeZone API
        https://bugs.webkit.org/show_bug.cgi?id=218681

        Reviewed by Ross Kirsling.

        * complex.yaml:
        * complex/timezone-range-cache-with-dst.js: Added.
        (shouldBe):
        (throw.new.Error):

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

        [JSC] Support @@species in ArrayBuffer / SharedArrayBuffer slice
        https://bugs.webkit.org/show_bug.cgi?id=218697

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:

2020-11-06  Dmitry Bezhetskov  <dbezhetskov@igalia.com>

        [WASM-References] Rename anyref to externref
        https://bugs.webkit.org/show_bug.cgi?id=218331

        Reviewed by Keith Miller.

        * wasm/Builder.js:
        (const._isValidValue):
        * wasm/references/externref_globals.js: Renamed from JSTests/wasm/references/anyref_globals.js.
        * wasm/references/externref_modules.js: Renamed from JSTests/wasm/references/anyref_modules.js.
        * wasm/references/externref_table.js: Renamed from JSTests/wasm/references/anyref_table.js.
        * wasm/references/externref_table_import.js: Renamed from JSTests/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):
        (fullGC.assert.eq):
        (doSet):
        (assert.throws):
        * wasm/references/func_ref.js:
        * wasm/references/is_null.js:
        * wasm/references/multitable.js:
        (assert.throws.1.exports.set_tbl0):
        (assert.throws):
        (string_appeared_here.vm.isMemoryLimited.tableInsanity):
        * wasm/references/table_misc.js:
        (TableSize.0.End.End.WebAssembly):
        (GetLocal.0.GetLocal.1.TableGrow.0.End.End.WebAssembly):
        * wasm/references/validation.js:
        (assert.throws):
        * wasm/stress/immutable-globals.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):
        * wasm/stress/mutable-globals.js:
        (import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.instance.exports.setI32AsI64):
        * wasm/wasm.json:

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

        Re-enable SharedArrayBuffer for JSC shell and Testers
        https://bugs.webkit.org/show_bug.cgi?id=212069

        Reviewed by Keith Miller.

        Update tests to align to the latest spec.

        * stress/SharedArrayBuffer-opt.js:
        (shouldSucceed):
        (idx.of.string_appeared_here.a.of.arrays.m.of.atomics):
        (string_appeared_here.a.of.arrays.m.of.atomics): Deleted.
        * stress/SharedArrayBuffer.js:
        (shouldSucceed):
        (Symbol):
        * stress/array-buffer-byte-length.js:
        (shouldThrow):
        (Symbol):
        * stress/atomics-add-uint32.js:
        * stress/atomics-known-int-use.js:
        * stress/atomics-neg-zero.js:
        * stress/atomics-store-return.js:
        * stress/lars-sab-workers.js:
        (resources):
        (notify):
        (wake): Deleted.
        * stress/regress-170473.js:
        * stress/regress-189317.js:
        * stress/shared-array-buffer-sort-while-different-thread-is-modifying.js: Added.
        (262.agent.waitUntil):
        (262.agent.start.262.agent.receiveBroadcast):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

        toLocaleDateString() resolves incorrect date for some old dates
        https://bugs.webkit.org/show_bug.cgi?id=161623

        Reviewed by Ryosuke Niwa.

        The issue is that timezone offset in old Warsaw date was broken because `localtime_r`'s tzdata is broken.
        The issue itself was fixed in r218348. This patch adds another test case to ensure this is fixed.

        * complex.yaml:
        * complex/timezone-offset-and-dst-in-warsaw.js: Added.
        (shouldBe):

2020-11-03  Saam Barati  <sbarati@apple.com>

        Add back the removed assertion from r269338 and add a test
        https://bugs.webkit.org/show_bug.cgi?id=218543

        Reviewed by Filip Pizlo.

        * stress/bad-osr-exit-checkpoint-state-assertion-during-js-lock-destruction.js: Added.
        (foo):
        (let.a.get length):

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

        REGRESSION (r254038): Simple.com money transfer UI is very laggy (multiple seconds per keypress)
        https://bugs.webkit.org/show_bug.cgi?id=218348

        Reviewed by Darin Adler.

        * ChakraCore.yaml:
        * ChakraCore/test/Date/DateCtr.baseline-jsc: Added. The time before America/Los_Angeles timezone is effective should be handled as UTC-0752.
        * complex.yaml:
        * complex/timezone-offset-before-america-los-angeles-is-defined.js: Added for UTC-0752.
        (shouldBe):
        * microbenchmarks/local-date-constructor.js: Added for microbenchmarking.
        (test):
        * mozilla/ecma/Date/15.9.5.16.js:
        * mozilla/ecma/Date/15.9.5.18.js:
        * mozilla/ecma/Date/15.9.5.22-1.js:
        * mozilla/ecma/Date/15.9.5.22-2.js:
        * mozilla/ecma/Date/15.9.5.35-1.js:
        When year is 0, America/Los_Angeles timezone is not effective, and mozilla test harness does not handle this timezone difference correctly.

2020-10-28  Saam Barati  <sbarati@apple.com>

        Better cache our serialization of the outer TDZ environment when creating FunctionExecutables during bytecode generation
        https://bugs.webkit.org/show_bug.cgi?id=199866
        <rdar://problem/53333108>

        Reviewed by Tadeu Zagallo.

        * microbenchmarks/let-const-tdz-environment-parsing-and-hash-consing-speed.js: Added.

2020-10-28  Robin Morisset  <rmorisset@apple.com>

        DFGIntegerRangeOptimization is wrong for Upsilon (as 'shadow' nodes are not in SSA form)
        https://bugs.webkit.org/show_bug.cgi?id=218073

        Reviewed by Saam Barati.

        The only testcase I managed to get for this bug loops forever when not crashing.
        So I use a 1s timeout through --watchdog=1000.

        * stress/bounds-checking-in-cold-loop.js: Added.
        (true.vm.ftlTrue):

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

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

        Reviewed by Ross Kirsling.

        * stress/intl-listformat.js: Added.
        (shouldBe):
        (shouldNotThrow):
        (shouldThrow):
        (test.DerivedListFormat):
        (test.get shouldThrow):
        (test):

2020-10-24  Caio Lima  <ticaiolima@gmail.com>

        [EWS][ARMv7] Flaky test stress/json-stringify-stack-overflow.js
        https://bugs.webkit.org/show_bug.cgi?id=218129

        Unreviewed test gardening.

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

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

        [JSC] support op_get_private_name in DFG and FTL
        https://bugs.webkit.org/show_bug.cgi?id=214861

        Reviewed by Filip Pizlo.

        * microbenchmarks/class-fields-private/monomorphic-get-private-field.js: Added.
        * microbenchmarks/class-fields-private/polymorphic-get-private-field.js: Added.
        * stress/dfg-get-private-name-by-id-generic.js: Added.
        * stress/dfg-get-private-name-by-id-osr-bad-identifier.js: Added.
        * stress/dfg-get-private-name-by-id.js: Added.
        * stress/dfg-get-private-name-by-offset-osr-bad-identifier.js: Added.
        * stress/dfg-get-private-name-by-offset-osr-bad-structure.js: Added.
        * stress/dfg-get-private-name-by-offset.js: Added.
        * stress/dfg-get-private-name-by-val-generic.js: Added.
        * stress/ftl-get-private-name-by-id.js: Added.
        * stress/ftl-get-private-name-by-offset-multi.js: Added.
        * stress/get-private-name-with-constant-ident.js: Added.
        * stress/get-private-name-with-constant-symbol.js: Added.
        * stress/get-private-name-with-different-symbol.js: Added.

2020-10-20  Saam Barati  <sbarati@apple.com>

        Don't OSR exit to bc#0 for FTL argument type checks during loop OSR entry
        https://bugs.webkit.org/show_bug.cgi?id=217925
        <rdar://problem/70369407>

        Reviewed by Michael Saboff and Tadeu Zagallo.

        * stress/ftl-osr-entry-should-not-exit-to-bc-zero.js: Added.

2020-10-20  Michael Saboff  <msaboff@apple.com>

        [JSC] Update RegExp UCD to version 13.0
        https://bugs.webkit.org/show_bug.cgi?id=217975

        Reviewed by Yusuke Suzuki.

        Updated test expectations for tests that now pass based on the updating to UCD 13.0.

        * test262/expectations.yaml:

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

        [JSC] Rename item() to at() and move it behind a flag
        https://bugs.webkit.org/show_bug.cgi?id=217942

        Reviewed by Yusuke Suzuki.

        * stress/at-method.js: Renamed from JSTests/stress/item-method.js.
        * test262/config.yaml: Add skips until the feature is renamed.

2020-10-19  Alexey Shvayka  <shvaikalesh@gmail.com>

        [WebIDL] %Interface%.prototype.constructor should be defined on [[Set]] receiver
        https://bugs.webkit.org/show_bug.cgi?id=216533

        Reviewed by Darin Adler.

        * stress/custom-get-set-proto-chain-put.js: Added.

2020-10-19  Mark Cohen  <m@mpc.sh>

        test262: test/language/expressions/conditional/in-branch-1.js
        https://bugs.webkit.org/show_bug.cgi?id=217879

        Reviewed by Darin Adler.

        I fixed this test262 failure - see the JSC ChangeLog for more details.
        All I've done in this directory is remove the expected failure from
        test262/expectations.yaml.

        * test262/expectations.yaml:

2020-10-18  Caio Lima  <ticaiolima@gmail.com>

        [ESNext][JIT] Add support for UntypedUse on PutPrivateName's base operand
        https://bugs.webkit.org/show_bug.cgi?id=217373

        Reviewed by Yusuke Suzuki.

        * stress/get-private-name-with-primitive.js: Added.
        * stress/put-private-name-untyped-use.js: Added.
        * stress/put-private-name-with-primitive.js: Added.

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

        Ensure %TypedArray% essential internal methods adhere to spec
        https://bugs.webkit.org/show_bug.cgi?id=217854

        Reviewed by Yusuke Suzuki.

        * stress/array-prototype-splice-making-typed-array.js:
        * stress/array-species-config-array-constructor.js:
        * stress/delete-property-dfg-inline.js:
        * stress/float32array-out-of-bounds.js:
        * stress/put-direct-index-broken-2.js:
        * stress/typedarray-access-monomorphic-neutered.js:
        * stress/typedarray-access-neutered.js:
        * stress/typedarray-configure-index.js:
        * stress/typedarray-functions-with-neutered.js:
        * stress/typedarray-getownproperty.js: Renamed from JSTests/stress/typedarray-getownproperty-not-configurable.js.
        * stress/typed-array-canonical-numeric-index-string.js:
        Adjust tests.

        * test262/expectations.yaml:
        Address all test failures under built-ins/TypedArrayConstructors/internals.
        Note that there are a slew of corrections needed for these test cases,
        which were discovered in the course of working on this patch:
        https://github.com/tc39/test262/pull/2833#issuecomment-709635850
        Accordingly, these remaining lines should all disappear in the future.

2020-10-16  Saam Barati  <sbarati@apple.com>

        Don't emit OpSpread with a constant as the destination
        https://bugs.webkit.org/show_bug.cgi?id=217800
        <rdar://problem/69492311>

        Reviewed by Yusuke Suzuki.

        * stress/spread-should-not-have-a-constant-as-dst.js: Added.
        (foo):
        (bar):

2020-10-15  Saam Barati  <sbarati@apple.com>

        Don't assign a bogus register to Load/ForwardVarargs in AvailabilityAnalysis before stack layout
        https://bugs.webkit.org/show_bug.cgi?id=217789
        <rdar://problem/69285703>

        Reviewed by Keith Miller.

        * stress/dont-assign-bogus-virtual-register-in-availability-analysis-before-stack-layout-runs.js: Added.
        (bar):
        (foo):

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

        REGRESSION (r268489): test/built-ins/Object/entries/order-after-define-property.js failing on test262 bots
        https://bugs.webkit.org/show_bug.cgi?id=217738

        Reviewed by Yusuke Suzuki.

        * stress/object-entries.js:

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

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

        Reviewed by Yusuke Suzuki.

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

2020-10-14  Alexey Shvayka  <shvaikalesh@gmail.com>

        Use @putByValDirect instead of Array.prototype.@push in built-ins
        https://bugs.webkit.org/show_bug.cgi?id=175432

        Reviewed by Yusuke Suzuki.

        * stress/array-push-intrinsic.js: Added.
        * test262/expectations.yaml: Mark 2 test cases as passing.

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

        JSObject::getPropertyNames should have a stack overflow check
        https://bugs.webkit.org/show_bug.cgi?id=217677
        <rdar://problem/69286436>

        Reviewed by Tadeu Zagallo.

        * stress/get-property-names-stack-overflow.js: Added.

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

        Array.prototype.sort's sortBucketSort accesses an array in an invalid way that can lead to incorrect results with indexed properties on the prototype chain
        https://bugs.webkit.org/show_bug.cgi?id=217634
        <rdar://problem/69489404>

        Reviewed by Yusuke Suzuki.

        * stress/sort-should-not-look-up-prototype-properties.js: Added.
        (assert):

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

        OpToPropertyKey only accepts temporary for destination
        https://bugs.webkit.org/show_bug.cgi?id=217471

        Reviewed by Saam Barati.

        * stress/spread-to-property-key-constant.js: Added.

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

        [JSC] arguments.callee should become ThrowTypeError if function has non simple parameter list
        https://bugs.webkit.org/show_bug.cgi?id=217574

        Reviewed by Darin Adler.

        * stress/arguments-and-non-simple-parameters.js: Added.
        (shouldBe):
        (ThrowTypeError.Object.getOwnPropertyDescriptor):
        (testUnmappedArguments):
        (testMappedArguments):
        (argumentGenerator2.inner):
        (argumentGenerator2):
        (argumentGenerator3.inner):
        (argumentGenerator3):
        (argumentGenerator4):
        (argumentGenerator5.inner.inner2):
        (argumentGenerator5.inner):
        (argumentGenerator5):
        (argumentGenerator6):
        (argumentGenerator7.inner):
        (argumentGenerator7):
        (argumentGenerator8.inner):
        (argumentGenerator8):
        (argumentGenerator9.inner):
        (argumentGenerator9):
        (argumentGenerator10.inner.inner2):
        (argumentGenerator10.inner):
        (argumentGenerator10):
        * test262/expectations.yaml:

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

        [JSC] BigInt constructor should be constructible while it always throws an error
        https://bugs.webkit.org/show_bug.cgi?id=217575

        Reviewed by Darin Adler.

        * stress/is-constructor.js:
        * stress/non-constructable-constructors.js: Added.
        (shouldThrow):

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

        [JSC] LowerCase when LanguageTag checks duplicate variants
        https://bugs.webkit.org/show_bug.cgi?id=217571

        Reviewed by Ross Kirsling.

        * stress/intl-language-tag.js:

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

        [JSC] Revert String.prototype.item
        https://bugs.webkit.org/show_bug.cgi?id=217449

        Reviewed by Yusuke Suzuki.

        * stress/item-method.js:
        * test262/config.yaml:

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

        [MIPS] Flaky test stress/array-species-create-should-handle-masquerader.js
        https://bugs.webkit.org/show_bug.cgi?id=217433

        Unreviewed test gardening.

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

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

        %TypedArray%.from must do mapping and putting in lockstep
        https://bugs.webkit.org/show_bug.cgi?id=217349

        Reviewed by Yusuke Suzuki.

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

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

        [JSC] Add Array#item to @@unscopables
        https://bugs.webkit.org/show_bug.cgi?id=217243

        Reviewed by Yusuke Suzuki.

        * stress/unscopables.js:
        Update test.

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

        [JSC] Implement item method proposal
        https://bugs.webkit.org/show_bug.cgi?id=217115

        Reviewed by Yusuke Suzuki.

        * stress/item-method.js: Added.
        * test262/config.yaml: Unskip tests.

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

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

        Reviewed by Darin Adler.

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

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

        %TypedArray%.{from, of} no longer perform AllocateTypedArray
        https://bugs.webkit.org/show_bug.cgi?id=216991

        Reviewed by Yusuke Suzuki.

        * stress/typedarray-of.js:
        Fix test.

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

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

        DataView instances should not have own "byteLength" and "byteOffset" properties
        https://bugs.webkit.org/show_bug.cgi?id=149906

        Reviewed by Ross Kirsling.

        * stress/dataview-no-own-properties.js: Added.

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

        REGRESSION (r267514): mozilla-tests.yaml/js1_5/Array/regress-157652.js.mozilla* timing out
        https://bugs.webkit.org/show_bug.cgi?id=216955

        Unreviewed test gardening: skip mozilla/regress-157652.js in --debug.

        r267514 removed special handling of sparse arrays, causing the timeout.

        * mozilla/mozilla-tests.yaml:

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

        %TypedArray%.prototype.toLocaleString must make conscious use of @toString
        https://bugs.webkit.org/show_bug.cgi?id=216956

        Reviewed by Yusuke Suzuki.

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

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

        %TypedArray%.prototype.sort must throw if comparator is defined and uncallable
        https://bugs.webkit.org/show_bug.cgi?id=216952

        Reviewed by Yusuke Suzuki.

        * stress/typedarray-sort.js:
        Fix test.

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

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

        %TypedArray%.prototype.{map, filter} should perform TypedArraySpeciesCreate correctly
        https://bugs.webkit.org/show_bug.cgi?id=216938

        Reviewed by Yusuke Suzuki.

        * stress/typedarray-slice.js:
        Fix test.

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

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

        %TypedArray%.prototype.fill must only evaluate its argument once
        https://bugs.webkit.org/show_bug.cgi?id=216912

        Reviewed by Yusuke Suzuki.

        * stress/typedarray-fill.js:
        Fix test.

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

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

        %ArrayIteratorPrototype%.next must check for detached buffers
        https://bugs.webkit.org/show_bug.cgi?id=216904

        Reviewed by Yusuke Suzuki.

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

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

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

        Update Array.prototype.sort to be consistent with tightened spec
        https://bugs.webkit.org/show_bug.cgi?id=202582

        Reviewed by Yusuke Suzuki and Keith Miller.

        Provided microbenchmarks test receivers that are half-sorted: 50% of their
        items and item pairs (to accomodate merge sort) are at the right place.

        Arrays of multiple sizes (8/24/64 items) are tested with both userland
        and default comparator (to cover bucket sort).

        * ChakraCore/test/Array/array_sort.baseline-jsc: Fix typo in error message.
        * microbenchmarks/array-prototype-sort-large-array-comparator.js: Added.
        * microbenchmarks/array-prototype-sort-large-array.js: Added.
        * microbenchmarks/array-prototype-sort-medium-array-comparator.js: Added.
        * microbenchmarks/array-prototype-sort-medium-array.js: Added.
        * microbenchmarks/array-prototype-sort-small-array-comparator.js: Added.
        * microbenchmarks/array-prototype-sort-small-array.js: Added.
        * mozilla/js1_5/Array/regress-157652.js: Skip sorting sparse array of UINT_MAX size.
        * stress/regress-188577.js: Replace sort() with unshift() and refactor.

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

        [JSC] Intl spec update: handle awkward rounding behavior
        https://bugs.webkit.org/show_bug.cgi?id=216760

        Reviewed by Ross Kirsling.

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

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

        [JSC][ESNext] Create a new opcode to handle private fields store/define
        https://bugs.webkit.org/show_bug.cgi?id=213372

        Reviewed by Yusuke Suzuki.

        Adjusting tests that emit `get_private_name` to avoid execution in
        FTL/DFG.

        * microbenchmarks/class-fields-private/polymorphic-put-private-field.js: Added.
        * microbenchmarks/class-fields-private/put-private-field.js: Added.
        * microbenchmarks/polymorphic-put-public-field.js: Added.
        * microbenchmarks/put-public-field.js: Added.
        * stress/dfg-put-private-name-check-barrier-insertion.js: Added.
        * stress/dfg-put-private-name-compiled-as-put-by-id-direct.js: Added.
        * stress/dfg-put-private-name-compiled-as-put-private-name-by-id.js: Added.
        * stress/put-private-name-by-id-set-do-not-add-structure-trasition.js: Added.
        * stress/put-private-name-check-structure-miss.js: Added.
        * stress/put-private-name-constant-folding-to-mult-put-by-offset.js: Added.
        * stress/put-private-name-constant-folding-to-put-by-offset.js: Added.
        * stress/put-private-name-generic.js: Added.
        * stress/put-private-name-invalid-define.js: Added.
        * stress/put-private-name-invalid-store.js: Added.
        * stress/put-private-name-invalidate-compiled-with-constant-symbol.js: Added.
        * stress/put-private-name-polymorphic-with-constant-symbol.js: Added.
        * stress/put-private-name-with-constant-symbol.js: Added.
        * stress/put-private-name-with-different-identifier.js: Added.

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

        [JSC] Enable Intl.DateTimeFormat dayPeriod
        https://bugs.webkit.org/show_bug.cgi?id=216845

        Reviewed by Mark Lam.

        * stress/intl-datetimeformat.js:

2020-09-22  HyeockJin Kim  <kherootz@gmail.com>

        Coerce computed property before adding to |excludedList|
        https://bugs.webkit.org/show_bug.cgi?id=216437

        Reviewed by Yusuke Suzuki.

        * stress/object-rest-deconstruct.js:
        (get 3):

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

        [JSC] BigInt should work with Map / Set
        https://bugs.webkit.org/show_bug.cgi?id=216667
        <rdar://problem/69107221>

        Reviewed by Robin Morisset.

        * stress/bigint-and-map-set.js: Added.
        (shouldBe):
        (opaque1n):
        (testMap):
        (let.set new):
        * stress/bigint-string-map-set.js: Added.
        (shouldBe):
        (testMap):
        * stress/bigint32-map-set.js: Added.
        (shouldBe):
        (testMap):

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

        [JSC] Proxy should be trapped if base value is primitive
        https://bugs.webkit.org/show_bug.cgi?id=216764

        Reviewed by Darin Adler.

        * stress/proxy-trap-in-primitive.js: Added.
        (shouldBe):
        * test262/expectations.yaml:

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

        Test262 update
        https://bugs.webkit.org/show_bug.cgi?id=216753

        Reviewed by Darin Adler.

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

        [JSC] Drop Options::useBigInt
        https://bugs.webkit.org/show_bug.cgi?id=216743

        Reviewed by Darin Adler.

        * bigIntTests.yaml: Removed.
        * stress/big-int-add-wrapped-value.js:
        * stress/big-int-addition-basic.js:
        * stress/big-int-addition-jit.js:
        * stress/big-int-addition-memory-stress.js:
        * stress/big-int-addition-string-coercion.js:
        * stress/big-int-addition-to-primitive-precedence.js:
        * stress/big-int-addition-to-primitive.js:
        * stress/big-int-addition-type-error.js:
        * stress/big-int-arithmetic-return-big-int.js:
        * stress/big-int-as-key.js:
        * stress/big-int-as-property-name.js:
        * stress/big-int-bit-not-general.js:
        * stress/big-int-bitwise-and-general.js:
        * stress/big-int-bitwise-and-jit.js:
        * stress/big-int-bitwise-and-memory-stress.js:
        * stress/big-int-bitwise-and-to-primitive-precedence.js:
        * stress/big-int-bitwise-and-type-error.js:
        * stress/big-int-bitwise-and-wrapped-value.js:
        * stress/big-int-bitwise-not-jit.js:
        * stress/big-int-bitwise-not-wrapped-value.js:
        * stress/big-int-bitwise-or-general.js:
        * stress/big-int-bitwise-or-jit-untyped.js:
        * stress/big-int-bitwise-or-jit.js:
        * stress/big-int-bitwise-or-memory-stress.js:
        * stress/big-int-bitwise-or-to-primitive-precedence.js:
        * stress/big-int-bitwise-or-type-error.js:
        * stress/big-int-bitwise-or-wrapped-value.js:
        * stress/big-int-bitwise-xor-general.js:
        * stress/big-int-bitwise-xor-jit.js:
        * stress/big-int-bitwise-xor-memory-stress.js:
        * stress/big-int-bitwise-xor-to-primitive-precedence.js:
        * stress/big-int-bitwise-xor-type-error.js:
        * stress/big-int-bitwise-xor-untyped.js:
        * stress/big-int-bitwise-xor-wrapped-value.js:
        * stress/big-int-boolean-proven-type.js:
        * stress/big-int-branch-usage.js:
        * stress/big-int-constructor-gc.js:
        * stress/big-int-constructor-oom.js:
        * stress/big-int-constructor-properties.js:
        * stress/big-int-constructor-prototype-prop-descriptor.js:
        * stress/big-int-constructor-prototype.js:
        * stress/big-int-constructor.js:
        * stress/big-int-div-jit-osr.js:
        * stress/big-int-div-jit-untyped.js:
        * stress/big-int-div-jit.js:
        * stress/big-int-div-memory-stress.js:
        * stress/big-int-div-to-primitive.js:
        * stress/big-int-div-type-error.js:
        * stress/big-int-div-wrapped-value.js:
        * stress/big-int-division.js:
        * stress/big-int-equals-basic.js:
        * stress/big-int-equals-to-primitive-precedence.js:
        * stress/big-int-equals-wrapped-value.js:
        * stress/big-int-exp-basic.js:
        * stress/big-int-exp-jit-osr.js:
        * stress/big-int-exp-jit-untyped.js:
        * stress/big-int-exp-jit.js:
        * stress/big-int-exp-negative-exponent.js:
        * stress/big-int-exp-to-primitive.js:
        * stress/big-int-exp-type-error.js:
        * stress/big-int-exp-wrapped-value.js:
        * stress/big-int-function-apply.js:
        * stress/big-int-greater-than-general.js:
        * stress/big-int-greater-than-jit.js:
        * stress/big-int-greater-than-or-equal-jit.js:
        * stress/big-int-greater-than-or-equal-order-of-evaluation.js:
        * stress/big-int-greater-than-or-equal-wrapped-values.js:
        * stress/big-int-greater-than-or-equal.js:
        * stress/big-int-greater-than-order-of-evaluation.js:
        * stress/big-int-greater-than-wrapped-values.js:
        * stress/big-int-json-stringify-to-json.js:
        * stress/big-int-json-stringify.js:
        * stress/big-int-left-shift-general.js:
        * stress/big-int-left-shift-range-error.js:
        * stress/big-int-left-shift-type-error.js:
        * stress/big-int-left-shift-untyped.js:
        * stress/big-int-left-shift-wrapped-value.js:
        * stress/big-int-length.js:
        * stress/big-int-less-than-general.js:
        * stress/big-int-less-than-jit.js:
        * stress/big-int-less-than-or-equal-general.js:
        * stress/big-int-less-than-or-equal-jit.js:
        * stress/big-int-less-than-or-equal-order-of-evaluation.js:
        * stress/big-int-less-than-or-equal-wrapped-values.js:
        * stress/big-int-less-than-order-of-evaluation.js:
        * stress/big-int-less-than-wrapped-values.js:
        * stress/big-int-literal-inside-literal-object.js:
        * stress/big-int-literal-line-terminator.js:
        * stress/big-int-literals.js:
        * stress/big-int-logical-and.js:
        * stress/big-int-logical-not.js:
        * stress/big-int-logical-or.js:
        * stress/big-int-mod-jit.js:
        * stress/big-int-mod-memory-stress.js:
        * stress/big-int-mod-osr.js:
        * stress/big-int-mod-to-primitive-precedence.js:
        * stress/big-int-mod-to-primitive.js:
        * stress/big-int-mod-type-error.js:
        * stress/big-int-mod-wrapped-value.js:
        * stress/big-int-mod.js:
        * stress/big-int-mul-jit-osr.js:
        * stress/big-int-mul-jit-untyped.js:
        * stress/big-int-mul-jit.js:
        * stress/big-int-mul-to-primitive-precedence.js:
        * stress/big-int-mul-to-primitive.js:
        * stress/big-int-mul-type-error.js:
        * stress/big-int-mul-wrapped-value.js:
        * stress/big-int-multiplication.js:
        * stress/big-int-multiply-memory-stress.js:
        * stress/big-int-negate-basic.js:
        * stress/big-int-no-conversion-to-number.js:
        * stress/big-int-operations-error.js:
        * stress/big-int-out-of-memory-tests.js:
        * stress/big-int-prop-descriptor.js:
        * stress/big-int-proto-constructor.js:
        * stress/big-int-proto-name.js:
        * stress/big-int-prototype-properties.js:
        * stress/big-int-prototype-proto.js:
        * stress/big-int-prototype-symbol-to-string-tag.js:
        * stress/big-int-prototype-to-string-apply.js:
        * stress/big-int-prototype-to-string-cast-overflow.js:
        * stress/big-int-prototype-to-string-exception.js:
        * stress/big-int-prototype-to-string-wrong-values.js:
        * stress/big-int-prototype-value-of.js:
        * stress/big-int-right-shift-general.js:
        * stress/big-int-right-shift-jit-osr.js:
        * stress/big-int-right-shift-jit-untyped.js:
        * stress/big-int-right-shift-jit.js:
        * stress/big-int-right-shift-type-error.js:
        * stress/big-int-right-shift-wrapped-value.js:
        * stress/big-int-spec-to-primitive.js:
        * stress/big-int-spec-to-this.js:
        * stress/big-int-strict-equals-jit.js:
        * stress/big-int-strict-spec-to-this.js:
        * stress/big-int-sub-wrapped-value.js:
        * stress/big-int-subtraction-basic.js:
        * stress/big-int-subtraction-jit.js:
        * stress/big-int-subtraction-type-error.js:
        * stress/big-int-to-object.js:
        * stress/big-int-to-string.js:
        * stress/big-int-type-of-proven-type-non-constant-including-symbol.js:
        * stress/big-int-type-of-proven-type-non-constant.js:
        * stress/big-int-type-of-proven-type.js:
        * stress/big-int-type-of.js:
        * stress/big-int-unary-plus.js:
        * stress/big-int-value-op-update-gc-rules.js:
        * stress/big-int-white-space-trailing-leading.js:
        * stress/bigint-toLocaleString.js:
        * stress/bitwise-not-fixup-rules.js:
        * stress/delete-property-inline-cache.js:
        * stress/inc-osr-exit-from-big-int.js:
        * stress/inc-osr-exit-to-big-int.js:
        * stress/left-shift-to-primitive-precedence.js:
        * stress/numeric-literal-separators.js:
        * stress/object-create-non-object-properties-parameter.js:
        * stress/proxy-call-apply-handler-to-this.js:
        * stress/right-shift-to-primitive-precedence.js:
        * stress/value-add-big-int-and-string.js:
        * stress/value-add-big-int-prediction-propagation.js:
        * stress/value-add-big-int-untyped.js:
        * stress/value-bit-and-ai-rule.js:
        * stress/value-bit-lshift-ai-rule.js:
        * stress/value-bit-not-ai-rule.js:
        * stress/value-bit-or-ai-rule.js:
        * stress/value-bit-xor-ai-rule.js:
        * stress/value-div-fixup-int32-big-int.js:
        * stress/value-mul-fixup-int32-big-int.js:
        * stress/value-sub-big-int-prediction-propagation.js:
        * stress/value-sub-big-int-untyped.js:
        * test262/config.yaml:

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

        [JSC] Generator declaration should not be allowed in single statement context
        https://bugs.webkit.org/show_bug.cgi?id=216720

        Reviewed by Ross Kirsling.

        * stress/generator-syntax.js:
        (testSyntaxError.gen):
        * test262/expectations.yaml:

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

        [ARMv7][MIPS] Test gaderning September version
        https://bugs.webkit.org/show_bug.cgi?id=216699

        Unreviewed test gardening.

        * stress/array-species-create-should-handle-masquerader.js:
        * stress/compare-eq-should-use-known-other-use.js:
        * stress/ftl-reflect-get-prototype-of.js:
        * stress/typedarray-access-neutered.js:

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

        DFG should ensure there are PhantomLocals for the taken block of op_jneq_ptr
        https://bugs.webkit.org/show_bug.cgi?id=216669

        Reviewed by Saam Barati.

        * stress/jneq-ptr-opcode-variable-only-live-on-taken-branch.js: Added.
        (bar):
        (foo):

2020-09-17  Tadeu Zagallo  <tzagallo@apple.com>

        Inconsistent loop exit assertion in B3ReduceLoopStrength
        https://bugs.webkit.org/show_bug.cgi?id=216274
        <rdar://problem/68513573>

        Reviewed by Keith Miller.

        * stress/reduce-loop-strength-multiple-exits.js: Added.
        (build_array):
        (main):

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

        [JSC] Async generator default-export is not handled
        https://bugs.webkit.org/show_bug.cgi?id=216643

        Reviewed by Ross Kirsling.

        * modules/async-generator-default.js: Added.
        (from.string_appeared_here.import.test.from.string_appeared_here.async test2):
        * modules/async-generator-default/module.js: Added.
        (export.default.async test):
        * test262/expectations.yaml:

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

        [JSC] Update JSModuleNamespaceObject::defineOwnProperty
        https://bugs.webkit.org/show_bug.cgi?id=216640

        Reviewed by Ross Kirsling.

        * modules/module-namespace-object-define-own-property.js: Added.
        (from.string_appeared_here.import.as.ns.from.string_appeared_here.shouldThrow):
        (shouldThrow):
        (shouldThrow.):
        (get TypeError):
        * modules/module-namespace-object-define-own-property/module.js: Added.
        * test262/expectations.yaml:

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

        Support export namespace `export * as ns`
        https://bugs.webkit.org/show_bug.cgi?id=214379

        Reviewed by Ross Kirsling.

        * stress/modules-syntax-error.js:
        * stress/modules-syntax.js:
        * test262/expectations.yaml:

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

        Don't IC a null custom accessor/value setter
        https://bugs.webkit.org/show_bug.cgi?id=216620
        <rdar://problem/68976066>

        Reviewed by Mark Lam.

        * stress/dont-ic-null-custom-setter.js: Added.

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

        JSImmutableButterfly::get needs to return jsDoubleNumber for double arrays
        https://bugs.webkit.org/show_bug.cgi?id=216589
        <rdar://problem/68061245>

        Reviewed by Yusuke Suzuki.

        * stress/jsimmutablebutterfly-get-must-return-double-boxed-value.js: Added.

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

        [JSC] Cache UDateTimePatternGenerator
        https://bugs.webkit.org/show_bug.cgi?id=213454

        Reviewed by Ross Kirsling.

        * microbenchmarks/date-to-locale-date-string.js: Added.
        * microbenchmarks/date-to-locale-string.js: Added.
        * microbenchmarks/date-to-locale-time-string.js: Added.

2020-09-15  HyeockJin Kim  <kherootz@gmail.com>

        Check whether the iterator is callable in spread
        https://bugs.webkit.org/show_bug.cgi?id=215974

        Reviewed by Darin Adler.

        * stress/spread-array-iterator.js: Added.
        (shouldThrowTypeError):
        (shouldThrowExactly):
        (f):
        (C):

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

        Unreviewed, skip construct-return-early-from-infinite-loop-for-fuzzer.js when JIT is disabled
        https://bugs.webkit.org/show_bug.cgi?id=216406

        We are not supporting returnEarlyFromInfiniteLoopsForFuzzing option for CLoop.

        * stress/construct-return-early-from-infinite-loop-for-fuzzer.js:
        (vm.useJIT):

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

        Object allocation sinking forgets escaped nodes when structure changes
        https://bugs.webkit.org/show_bug.cgi?id=216214
        <rdar://problem/68518460>

        Reviewed by Saam Barati.

        * stress/allocation-sinking-changing-structures.js: Added.
        (main.v4.get v4):
        (main):

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

        CustomFunctionEquivalence PropertyCondition needs to check if the structure has the property
        https://bugs.webkit.org/show_bug.cgi?id=216575
        <rdar://problem/68286930>

        Reviewed by Yusuke Suzuki.

        * stress/has-static-property-property-condition-needs-to-check-if-structure-has-property.js: Added.
        (foo):

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

        [JSC] Apply Intl.DateTimeFormat hour-cycle correctly when timeStyle is used
        https://bugs.webkit.org/show_bug.cgi?id=216521

        Reviewed by Ross Kirsling.

        JSTests/stress/intl-date-time-format-date-time-style-hour-cycle.js result is now matching against V8 and SpiderMonkey,
        and this new behavior is more reasonable.

        * stress/intl-date-time-format-date-time-style-hour-cycle.js:
        (shouldBe.o.format):
        (shouldBe):
        * stress/intl-datetimeformat-hour-cycle.js: Added.
        (shouldBe):
        (throw.new.Error):
        * test262/expectations.yaml:

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

        [JSC] Intl.Collator should take collation option
        https://bugs.webkit.org/show_bug.cgi?id=216529

        Reviewed by Ross Kirsling.

        * stress/intl-collator-co-extension.js:
        (shouldThrow):

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

        BytecodeParser should GetLocal op_ret's value even if it's unused by the caller
        https://bugs.webkit.org/show_bug.cgi?id=216506

        Reviewed by Mark Lam.

        * stress/osr-availability-should-see-unused-return-as-available.js: Added.
        (foo):
        (set isFinite):

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

        Proxy's "ownKeys" trap result should not be sorted
        https://bugs.webkit.org/show_bug.cgi?id=216227

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/object-get-own-property-symbols-on-large-array.js:
        * microbenchmarks/object-get-own-property-symbols.js:
        * microbenchmarks/reflect-own-keys.js: Added.
        * stress/proxy-own-keys.js: Fix incorrect assert.
        * test262/expectations.yaml: Mark 20 test cases as passing.

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

        ArraySetLength should coerce [[Value]] before descriptor validation
        https://bugs.webkit.org/show_bug.cgi?id=158791

        Reviewed by Darin Adler.

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

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

        Remove bogus asserts in FTLLower that assume programs are compiled with sensible speculations
        https://bugs.webkit.org/show_bug.cgi?id=216485
        <rdar://problem/68562804>

        Reviewed by Keith Miller.

        * stress/ftl-should-not-assume-speculations-are-sensible.js: Added.
        (foo):

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

        Make a few built-in methods throw if called as top-level functions
        https://bugs.webkit.org/show_bug.cgi?id=216467

        Reviewed by Darin Adler.

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

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

        Don't assume byte code operands are uint32 JSValues
        https://bugs.webkit.org/show_bug.cgi?id=216386

        Reviewed by Yusuke Suzuki.

        * stress/dont-assume-bytecode-operand-is-uint32.js: Added.
        (async foo):

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

        [JSC] Canonicalize "true" unicode extension type value to ""
        https://bugs.webkit.org/show_bug.cgi?id=216224

        Reviewed by Ross Kirsling.

        * stress/intl-collator-co-extension.js:
        (explicitTrueBeforeICU67): Deleted.
        * stress/intl-collator.js:
        (shouldBe.testCollator.Intl.Collator):
        (explicitTrueBeforeICU67): Deleted.
        * stress/intl-datetimeformat.js:
        * stress/intl-locale.js:
        * stress/intl-numberformat.js:
        * stress/intl-object.js:
        * stress/intl-pluralrules.js:
        * stress/intl-relativetimeformat.js:
        * test262/expectations.yaml:

2020-09-11  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] attribute-change transition should not pin Structure
        https://bugs.webkit.org/show_bug.cgi?id=215528

        Reviewed by Saam Barati.

        * stress/change-attribute-structure-transition.js: Added.
        (shouldBe):
        (sd.let.data.vm.getStructureTransitionList.let.result.return.result.kind):
        (sd):
        (shouldBe.JSON.stringify.sd):
        (lastStructureID):
        (shouldBe.JSON.stringify.Object.getOwnPropertyDescriptor):

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

        Update test262 to commit 323905b70e64
        https://bugs.webkit.org/show_bug.cgi?id=216379

        Unreviewed test gardening.

        * test262/expectations.yaml: Reset expectations for --debug.

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

        [JSC] agent start function should move isolated copy of source
        https://bugs.webkit.org/show_bug.cgi?id=216383
        <rdar://problem/66371008>

        Reviewed by Saam Barati.

        * stress/stress-agent.js: Added.

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

        [JSC] unshift / shift should take structure lock
        https://bugs.webkit.org/show_bug.cgi?id=216378
        <rdar://problem/68496096>

        Reviewed by Mark Lam.

        * stress/unshift-and-concurrent-access.js: Added.

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

        Promise.prototype.finally should perform PromiseResolve
        https://bugs.webkit.org/show_bug.cgi?id=176006

        Reviewed by Yusuke Suzuki.

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

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

        Update test262 to commit 323905b70e64
        https://bugs.webkit.org/show_bug.cgi?id=216379

        Reviewed by Yusuke Suzuki.

        * test262/config.yaml: Skip "legacy-regexp" feature and unskip 2 passing tests.
        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/*: Updated.
        * test262/test262-Revision.txt:

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

        OutOfBoundsSaneChain operations should use their own heap locations
        https://bugs.webkit.org/show_bug.cgi?id=216328
        <rdar://problem/68568039>

        Reviewed by Keith Miller.

        * stress/out-of-bounds-sane-chain-need-their-own-heap-location.js: Added.
        (foo):

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

        Don't emitDirectBinding() if there is a [...rest] element binding
        https://bugs.webkit.org/show_bug.cgi?id=216228

        Reviewed by Darin Adler.

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

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

        [JSC] returnEarlyFromInfiniteLoopsForFuzzing should return object
        https://bugs.webkit.org/show_bug.cgi?id=216289
        <rdar://problem/68496533>

        Reviewed by Saam Barati.

        * stress/construct-return-early-from-infinite-loop-for-fuzzer.js: Added.
        (foo):

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

        [JSC] Special property caching should check Structure's cacheability
        https://bugs.webkit.org/show_bug.cgi?id=216222

        Reviewed by Saam Barati.

        * stress/module-namespace-object-caching.js: Added.
        (shouldBe):
        (async fn):
        * stress/not-cache-over-uncacheable-dictionary.js: Added.
        (shouldBe):
        * stress/resources/to-string-module.js: Added.
        (export.toString):
        * stress/resources/value-of-module.js: Added.
        (export.valueOf):

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

        [JSC] Align legacy Intl constructor behavior to spec
        https://bugs.webkit.org/show_bug.cgi?id=216193

        Reviewed by Darin Adler.

        * stress/intl-datetimeformat.js:
        * stress/intl-legacy-constructors.js: Added.
        (shouldBe):
        (shouldThrow):
        (testLegacyConstructor):
        * stress/intl-numberformat.js:

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

        Array.prototype.push should always perform [[Set]] in strict mode
        https://bugs.webkit.org/show_bug.cgi?id=216121

        Reviewed by Darin Adler.

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

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

        [JSC] Cache toString / valueOf / @@toPrimitive for major cases
        https://bugs.webkit.org/show_bug.cgi?id=216061

        Reviewed by Saam Barati.

        * stress/delete-cached-to-primitive-property.js: Added.
        (shouldBe):
        (object.__proto__.Symbol.toPrimitive):
        * stress/delete-cached-to-string-property.js: Added.
        (shouldBe):
        (object.__proto__.toString):
        * stress/delete-cached-value-of-property.js: Added.
        (shouldBe):
        (shouldThrow):
        (object.__proto__.valueOf):
        * stress/hide-cached-to-primitive-property.js: Added.
        (shouldBe):
        (object.__proto__.Symbol.toPrimitive):
        * stress/hide-cached-to-string-property.js: Added.
        (shouldBe):
        (object.__proto__.toString):
        * stress/hide-cached-value-of-property.js: Added.
        (shouldBe):
        (object.__proto__.valueOf):
        * stress/replace-cached-to-primitive-property.js: Added.
        (shouldBe):
        (object.__proto__.Symbol.toPrimitive):
        * stress/replace-cached-to-string-property.js: Added.
        (shouldBe):
        (object.__proto__.toString):
        * stress/replace-cached-value-of-property.js: Added.
        (shouldBe):
        (object.__proto__.valueOf):

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

        [JSC] Add missing detached buffer errors for DataView
        https://bugs.webkit.org/show_bug.cgi?id=216062

        Reviewed by Yusuke Suzuki.

        * stress/detached-buffer-typeerror.js:
        Add new test.

        * stress/dataview-jit-neuter.js:
        * stress/native-constructors-length.js:
        Update existing tests.

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

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

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

        Reviewed by Ross Kirsling.

        Rebaseline test262.

        * test262/expectations.yaml:
        * test262/harness/compareArray.js:
        (assert.compareArray):
        * test262/harness/testIntl.js:
        (regExpPropertiesDefaultValues):
        * test262/latest-changes-summary.txt:
        * test262/test/annexB/language/expressions/object/__proto__-poisoned-object-prototype.js: Added.
        * test262/test/built-ins/Array/prototype/push/length-near-integer-limit-set-failure.js: Added.
        * test262/test/built-ins/Object/defineProperty/redefine-length-with-various-values-and-configurable-true.js: Added.
        * test262/test/harness/compare-array-falsy-arguments.js: Added.
        (assertThrows):
        * test262/test/intl402/DateTimeFormat/constructor-options-order-fractionalSecondDigits.js:
        * test262/test/language/expressions/object/__proto__-permitted-dup-shorthand.js: Copied from JSTests/test262/test/language/expressions/object/__proto__-permitted-dup.js.
        * test262/test/language/expressions/object/__proto__-permitted-dup.js:
        (obj.__proto__):
        (obj.async __proto__):
        * test262/test262-Revision.txt:

2020-09-02  Michael Saboff  <msaboff@apple.com>

        ASSERTION FAILED: value.isCell() && value.asCell()->type() == CustomGetterSetterType ./bytecode/ObjectPropertyConditionSet.cpp
        https://bugs.webkit.org/show_bug.cgi?id=216103

        Reviewed by Saam Barati.

        New teset.

        * stress/custom-get-set-override.js: Added.
        (overrideFunction.o.customFunction):
        (overrideFunction):

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

        [ARMv7] Skip stress/intl-segmenter.js
        https://bugs.webkit.org/show_bug.cgi?id=216074

        Unreviewed Gardening.

        Skipping this test for ARMv7, since some boards we have are using ICU
        60 and causes issues for this test.

        * stress/intl-segmenter.js:

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

        [JSC] @defaultPromiseThen fast path should check species constructor
        https://bugs.webkit.org/show_bug.cgi?id=215996

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:

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

        [JSC] Use -2 for grouping options in IntlRelativeTimeFormat
        https://bugs.webkit.org/show_bug.cgi?id=215984

        Reviewed by Ross Kirsling.

        * stress/intl-relativetimeformat.js:

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

        [JSC] async function cannot appear in single-statement context
        https://bugs.webkit.org/show_bug.cgi?id=215993

        Reviewed by Darin Adler.

        * stress/async-function-lookahead.js: Added.
        (testSyntax):
        (testSyntaxError):
        (testSyntax.false.async t):
        (testSyntaxError.false.async t):
        * test262/expectations.yaml:

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

        [JSC] `let [` sequence cannot appear in ExpressionStatement context
        https://bugs.webkit.org/show_bug.cgi?id=215977

        Reviewed by Ross Kirsling.

        * stress/let-and-open-bracket.js: Added.
        (testSyntax):
        (testSyntaxError):
        * test262/expectations.yaml:

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

        [JSC] for-of uses AssignmentExpression while for-in uses Expression
        https://bugs.webkit.org/show_bug.cgi?id=215975

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:

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

        [JSC] for-of / for-in left-hand-side target should be simple-assignment-target
        https://bugs.webkit.org/show_bug.cgi?id=215969

        Reviewed by Ross Kirsling.

        * stress/for-of-in-non-reference.js: Added.
        (testSyntax):
        (testSyntaxError):
        (testSyntaxError.t):
        (testSyntaxError.async t):
        (testSyntax.async t):
        * test262/expectations.yaml:

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

        [JSC] Implement Intl.DateTimeFormat dayPeriod
        https://bugs.webkit.org/show_bug.cgi?id=215839

        Reviewed by Ross Kirsling.

        * stress/intl-datetimeformat-day-period.js: Added.
        (shouldBe):
        (throw.new.Error):
        * test262/config.yaml:

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

        [JSC] super property with new should be accepted
        https://bugs.webkit.org/show_bug.cgi?id=215966

        Reviewed by Ross Kirsling.

        * stress/super-and-new.js: Added.
        (testSyntaxError):
        (shouldBe):
        (test.A):
        (test.A.prototype.get hey):
        (test.A.prototype.get hey2):
        (test.A.prototype.super):
        (test.B.get super):

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

        [JSC] `new import.meta()` is acceptable
        https://bugs.webkit.org/show_bug.cgi?id=215915

        Reviewed by Ross Kirsling.

        * stress/modules-syntax-error.js:
        * stress/modules-syntax.js:
        * test262/expectations.yaml:

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

        __proto__ in object literal should perform [[SetPrototypeOf]] directly
        https://bugs.webkit.org/show_bug.cgi?id=215769

        Reviewed by Ross Kirsling.

        * microbenchmarks/object-literal-underscore-proto-setter.js: Added.
        * stress/syntax-checker-duplicate-underscore-proto.js:
        Rewrite the test to ensure each eval() call throws a SyntaxError.

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

        [JSC] setLength in Array#push could get very large length
        https://bugs.webkit.org/show_bug.cgi?id=215897
        <rdar://problem/67859149>

        Reviewed by Keith Miller.

        * stress/array-push-more-than-max-size.js: Added.
        (shouldBe):
        (shouldThrow):

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

        GetByVal constant folding over a Double OutOfBoundsSaneChain array with no BytecodeUsesAsOther should constant fold to PNaN, not undefined
        https://bugs.webkit.org/show_bug.cgi?id=215894
        <rdar://problem/67669696>

        Reviewed by Michael Saboff and Keith Miller.

        * stress/oob-sane-chain-double-constant-fold-to-PNaN.js: Added.

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

        Merge putLength() into setLength()
        https://bugs.webkit.org/show_bug.cgi?id=211279

        Reviewed by Darin Adler and Saam Barati.

        * microbenchmarks/array-shift-unshift-empty.js: Added.
        * stress/array-setLength-on-proxy-error.js: Added.

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

        [JSC] Enable Intl.Segmenter
        https://bugs.webkit.org/show_bug.cgi?id=215854

        Reviewed by Ross Kirsling.

        * stress/intl-segmenter.js:
        * test262/config.yaml:

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

        [JSC] Add ASCII comparison fast path for IntlCollator
        https://bugs.webkit.org/show_bug.cgi?id=215798

        Reviewed by Darin Adler, Ross Kirsling, and Saam Barati.

        * stress/string-locale-compare-uca-ducet.js: Added.
        (shouldBe):
        * stress/string-localeCompare.js:
        (data.sort):

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

        [JSC] Implement Intl.DateTimeFormat fractionalSecondDigits
        https://bugs.webkit.org/show_bug.cgi?id=215840

        Reviewed by Ross Kirsling.

        Test262 is showing wrong ordering of option property accesses compared to the latest PR.
        Later, we should update Test262.

        * stress/intl-datetimeformat.js:
        (const.options.get second):
        (const.options.get fractionalSecondDigits):
        (const.options.get localeMatcher):
        (const.options.get timeZoneName):
        (const.options.get formatMatcher):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

        Skip stress/array-species-create-should-handle-masquerader.js on MIPS

        Unreviewed Gardening.

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

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

        [JSC] FTL should use m_origin instead of m_node->origin since m_node can be nullptr
        https://bugs.webkit.org/show_bug.cgi?id=215833

        Reviewed by Mark Lam.

        * stress/ftl-entry-osr-exit-has-nullptr-node.js: Added.
        (foo):

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

        Invalid early error for object literal method named "__proto__"
        https://bugs.webkit.org/show_bug.cgi?id=215760

        Reviewed by Ross Kirsling.

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

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

        Skip failing tests on MIPS for later investigation

        Unreviewed Gardening.

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

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

        Implementation of the class "extends" clause incorrectly uses __proto__ for setting prototypes
        https://bugs.webkit.org/show_bug.cgi?id=205848

        Reviewed by Keith Miller.

        * microbenchmarks/class-derived-creation.js: Added.
        * test262/expectations.yaml: Mark 4 test cases as passing.

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

        Update test262 (mid Aug 2020 edition)
        https://bugs.webkit.org/show_bug.cgi?id=215784

        Rubber-stamped by Saam Barati and Yusuke Suzuki.

        * test262/expectations.yaml:
        * test262/latest-changes-summary.txt:
        * test262/test/built-ins/String/prototype/split/limit-touint32-error.js: Added.
        (ExpectedError):
        (ExpectedError.prototype.toString):
        (nonStringableSeparator.Symbol.toPrimitive):
        (nonStringableSeparator.toString):
        (nonStringableSeparator.valueOf):
        (nonNumberableLimit.Symbol.toPrimitive):
        * test262/test/built-ins/String/prototype/split/separator-tostring-error.js: Added.
        (ExpectedError):
        (ExpectedError.prototype.toString):
        (nonStringableSeparator.toString):
        * test262/test/built-ins/String/prototype/split/separator-undef-limit-zero.js:
        * test262/test/built-ins/String/prototype/split/this-value-tostring-error.js: Added.
        (ExpectedError):
        (ExpectedError.prototype.toString):
        (nonStringableReceiver.toString):
        (splitter.Symbol.split):
        (catch):
        (nonStringableSeparator.Symbol.toPrimitive):
        (nonStringableSeparator.toString):
        (nonStringableSeparator.valueOf):
        * test262/test/language/module-code/export-default-asyncfunction-declaration-binding-exists.js: Added.
        (A):
        (export.default.async A):
        * test262/test/language/module-code/export-default-asyncfunction-declaration-binding.js: Added.
        (export.default.async A):
        * test262/test/language/module-code/export-default-asyncgenerator-declaration-binding-exists.js: Added.
        (AG):
        (export.default.async AG):
        * test262/test/language/module-code/export-default-asyncgenerator-declaration-binding.js: Added.
        (export.default.async AG):
        * test262/test/language/module-code/export-default-function-declaration-binding-exists.js: Added.
        (F):
        (export.default.F):
        * test262/test/language/module-code/export-default-function-declaration-binding.js: Added.
        (export.default.F):
        * test262/test/language/module-code/export-default-generator-declaration-binding-exists.js: Added.
        (G):
        (export.default.G):
        * test262/test/language/module-code/export-default-generator-declaration-binding.js: Added.
        (export.default.G):
        * test262/test262-Revision.txt:

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

        Unreviewed, ignore RangeErrors when ICU is too old

        Since ICU version is different (very sad), some of tests can throw an error.

        * stress/intl-language-tag.js:
        (let.shouldThrow):
        (let.shouldNotThrow):
        (suppressErrors):
        (vm.icuVersion):
        (shouldThrow): Deleted.
        (shouldNotThrow): Deleted.

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

        [JSC] Implement Intl Language Tag Parser
        https://bugs.webkit.org/show_bug.cgi?id=215058

        Reviewed by Ross Kirsling and Darin Adler.

        * stress/intl-collator.js:
        * stress/intl-datetimeformat.js:
        * stress/intl-language-tag.js: Added.
        (shouldThrow):
        (shouldNotThrow):
        * stress/intl-locale.js:
        * stress/intl-numberformat.js:
        * stress/intl-object.js:
        * stress/intl-pluralrules.js:
        * stress/intl-relativetimeformat.js:
        * stress/string-toLocaleLowerCase.js:
        * stress/string-toLocaleUpperCase.js:
        * test262/expectations.yaml:

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

        Unreviewed, workaround for old ICU headers in macOS Catalina bots
        https://bugs.webkit.org/show_bug.cgi?id=209774

        EWS and Catalina bots are inconsistent in terms of ICU header versions.
        This patch adds a workaround which checks ICU header version too at runtime.

        * stress/intl-numberformat-unified-ja.js:
        (vm.icuVersion.64.vm.icuHeaderVersion):
        (vm.icuVersion): Deleted.
        * stress/intl-numberformat-unified.js:
        (vm.icuVersion.64.vm.icuHeaderVersion):
        (vm.icuVersion): Deleted.

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

        The [[ThrowTypeError]] function object must not be extensible
        https://bugs.webkit.org/show_bug.cgi?id=108873

        Reviewed by Yusuke Suzuki.

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

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

        [ECMA-402] Intl.DateTimeFormat dateStyle/timeStyle missing in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=209776

        Reviewed by Darin Adler and Ross Kirsling.

        * stress/intl-date-time-format-date-time-style-basic.js: Added.
        (shouldBe):
        (shouldBe.o.format):
        * stress/intl-date-time-format-date-time-style-hour-cycle.js: Added.
        (shouldBe):
        (shouldBe.o.format):
        * stress/intl-date-time-style-option-consistency.js: Added.
        (shouldThrow):
        (value.of.Object.entries):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

        Unreviewed, Catalina test262 bot is using older SDK than actual Catalina's one

        We should update the bot. For now, skipping these tests.

        * test262/config.yaml:

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

        [ECMA-402] Implement Intl.DateTimeFormat.prototype.formatRange
        https://bugs.webkit.org/show_bug.cgi?id=209778

        Reviewed by Ross Kirsling.

        test262 failures are due to either of

            1. formatRangeToParts is missing
            2. ICU version difference

        * stress/intl-datetimeformat-formatrange-relevant-extensions-ja.js: Added.
        (shouldBe):
        (shouldThrow):
        (vm.icuVersion):
        * stress/intl-datetimeformat-formatrange-relevant-extensions.js: Added.
        (shouldBe):
        (shouldThrow):
        * stress/intl-datetimeformat-formatrange.js: Added.
        (shouldBe):
        (shouldThrow):
        (test):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

        [JSC] Add Intl.Segmenter
        https://bugs.webkit.org/show_bug.cgi?id=213638

        Reviewed by Ross Kirsling.

        * stress/intl-segmenter.js: Added.
        (shouldBe):
        (shouldNotThrow):
        (func):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

        [ECMA-402] Implement unified Intl.NumberFormat
        https://bugs.webkit.org/show_bug.cgi?id=209774

        Reviewed by Ross Kirsling and Darin Adler.

        All test262 failures are due to old ICU version. Once ICU is updated, they will go away.

        * stress/intl-numberformat-unified-ja.js: Added.
        (shouldBe):
        (vm.icuVersion):
        * stress/intl-numberformat-unified.js: Added.
        (shouldBe):
        (vm.icuVersion):
        * stress/intl-numberformat.js:
        (testNumberFormat):
        (shouldBe.testNumberFormat.Intl.NumberFormat):
        * test262/config.yaml:
        * test262/expectations.yaml:

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

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

        Reviewed by Ross Kirsling.

        * stress/intl-displaynames.js:
        * stress/intl-parse-unicode-subtags.js:
        * stress/intl-suppored-locales-of.js:
        * test262/config.yaml:

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

        Align "length" properties of function prototypes with the spec
        https://bugs.webkit.org/show_bug.cgi?id=215716

        Reviewed by Ross Kirsling.

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

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

        Define Intl[Symbol.toStringTag]
        https://bugs.webkit.org/show_bug.cgi?id=215715

        Reviewed by Ross Kirsling.

        * stress/intl-object.js:
        * test262/expectations.yaml: Mark 4 test cases as passing.

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

        Function.prototype.bind should not clamp "length" to int32
        https://bugs.webkit.org/show_bug.cgi?id=215733

        Reviewed by Darin Adler.

        * microbenchmarks/function-bind-creation.js: Added.
        * test262/expectations.yaml: Mark 4 test cases as passing.

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

        Invalid early errors for class methods named "constructor" and "prototype"
        https://bugs.webkit.org/show_bug.cgi?id=215413

        Reviewed by Darin Adler.

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

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

        Update test262 to commit e0a65ee75ef8
        https://bugs.webkit.org/show_bug.cgi?id=215708

        Reviewed by Yusuke Suzuki.

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

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

        [JSC] Add Object.getOwnPropertyNames caching as it is done for Object.keys, and accelerate Object.getOwnPropertyDescriptor
        https://bugs.webkit.org/show_bug.cgi?id=215666

        Reviewed by Saam Barati.

        * microbenchmarks/get-own-property-descriptor.js: Added.
        (object.get test):
        (object.set test):
        * stress/get-own-property-names-bad-time.js: Added.
        (shouldBe):
        (test):
        * stress/get-own-property-names-dfg.js: Added.
        (shouldBe):
        (test):
        * stress/keys-bad-time.js: Added.
        (shouldBe):
        (test):
        * stress/keys-dfg.js: Added.
        (shouldBe):
        (test):
        * stress/object-get-own-property-names-cached-zero.js: Added.
        (shouldBe):
        (test):
        * stress/object-get-own-property-names-changed-attribute.js: Added.
        (shouldBe):
        (test):
        * stress/object-get-own-property-names-changed-index.js: Added.
        (shouldBe):
        (test):
        * stress/object-get-own-property-names-changed.js: Added.
        (shouldBe):
        (test):
        * stress/object-get-own-property-names-indexed-non-cache.js: Added.
        (shouldBe):
        (test):
        * stress/object-get-own-property-names-overrides-get-property-names.js: Added.
        (shouldBe):
        (test):
        (noInline):
        * stress/object-keys-cache.js: Added.
        (shouldBe):
        (symbol):

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

        Introduce OpIsCallable bytecode and intrinsic
        https://bugs.webkit.org/show_bug.cgi?id=215572

        Reviewed by Ross Kirsling and Saam Barati.

        * stress/type-of-functions-and-objects.js:
        * test262/expectations.yaml: Mark 2 test cases as passing.

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

        Have an OOB+SaneChain Array::Speculation
        https://bugs.webkit.org/show_bug.cgi?id=215487

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/oob-sane-chain-contiguous.js: Added.
        * microbenchmarks/oob-sane-chain-double-read-undefined.js: Added.
        * microbenchmarks/oob-sane-chain-double.js: Added.
        * microbenchmarks/oob-sane-chain-int32.js: Added.
        * stress/oob-sane-chain-negative-index.js: Added.

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

        Unreviewed, reduce iteration count more for non-JIT environments

        If JSC does not have JIT, many iterations do not matter.

        * stress/memcpy-typed-loops.js:

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

        OSRAvailabilityAnalysis shouldn't mark GetStack nodes directly as valid places for recovery
        https://bugs.webkit.org/show_bug.cgi?id=215434

        Reviewed by Saam Barati.

        * stress/for-of-post-sinking-osr-availability.js: Added.
        (foo):

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

        Cache Structure::attributeChangeTransition()
        https://bugs.webkit.org/show_bug.cgi?id=214890

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/redefine-property-previous-attributes.js: Added.

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

        Inline cache Replace and Setters on PureForwardingProxy
        https://bugs.webkit.org/show_bug.cgi?id=215250

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/property-replace-and-setter-on-js-proxy.js: Added.
        (assert):
        (foo):

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