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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Alexey Shvayka.

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

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

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

        Reviewed by Keith Miller.

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

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

        Unreviewed, ensure test262 expectations reflect BigSur release mode.

        * test262/expectations.yaml:

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

        Update test262 to latest, to bring in Temporal tests.

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

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

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

        Reviewed by Robin Morisset.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

        * test262/config.yaml:

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

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

        Reviewed by Ross Kirsling.

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

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

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

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

        * stress/intl-datetimeformat.js:

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

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

        changing print() broke a lot of random things

        Reverted changeset:

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Robin Morisset.

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

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

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

        Reviewed by Tadeu Zagallo.

        * ChakraCore/test/jsc-lib.js:

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

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

        Reviewed by Mark Lam and Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

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

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

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

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

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Filip Pizlo.

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

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

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

        Reviewed by Saam Barati.

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

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

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

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

        Reverted changeset:

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

        * test262/expectations.yaml:

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

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

        Reviewed by Ross Kirsling.

        Upgrade test262 to the latest one.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Unreviewed gardening.

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

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Saam Barati.

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

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

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

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

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

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

        Reviewed by Mark Lam.

        * wasm/references/multitable.js:

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

        Reviewed by Darin Adler.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

        * stress/intl-displaynames.js:

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Keith Miller.

        Upgrade test262 to the latest one.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Saam Barati.

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

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

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Mark Lam.

        Fix typo in test name.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Saam Barati.

        * stress/unscopables.js:

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

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

        * ChakraCore.yaml:

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

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

        Reviewed by Filip Pizlo.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Alexey Shvayka.

        * test262/expectations.yaml:

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Ross Kirsling.

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

        Reviewed by Alexey Shvayka.

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

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

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

        Reviewed by Alexey Shvayka.

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

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

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

        Reviewed by Tadeu Zagallo.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Saam Barati.

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

        * microbenchmarks/memcpy-typed-loop.js:

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Frédéric Wang.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Saam Barati.

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

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Unreviewed, test gardening.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Michael Saboff.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

        * stress/wasm-loop-consistency.js:

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Keith Miller.

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

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Speedometer/jQuery-TodoMVC 2-3% regression

        Reverted changesets:

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

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

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

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

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

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

        Reviewed by Robin Morisset.

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

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

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

        Reviewed by Filip Pizlo.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Saam Barati.

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

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

        Reviewed by Caio Araujo Neponoceno de Lima.

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

        Tested with 50 iterations in both arm and mips.

        Unreviewed Gardening.

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

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

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

        Unreviewed Gardening.

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

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

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

        Tested with 50 iterations in both arm and mips.

        Unreviewed Gardening.

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

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

        Unreviewed Gardening.

        * stress/arguments-properties-order.js:

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

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

        Reviewed by Mark Lam.

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

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Robin Morisset.

        * microbenchmarks/interpreter-wasm.js:

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

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

        Reviewed by Tadeu Zagallo.

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

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

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

        Unreviewed gardening.

        No failures on either platform after 100 iterations.

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

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

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

        Unreviewed gardening.

        No failures on either platform after 100 iterations.

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

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

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

        Unreviewed gardening.

        No failure after 60 iterations.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Tadeu Zagallo.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Adrian Perez de Castro.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Sam Weinig.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Saam Barati.

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

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

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

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Filip Pizlo.

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

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Robin Morisset.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Filip Pizlo.

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

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

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

        Reviewed by Caio Araujo Neponoceno de Lima.

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

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

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

        Unreviewed gardening.

        Appears to no longer be flaky.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Mark Lam.

        Add the testcase found by Tuomas.

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

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

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

        Unreviewed, revert.

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

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

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

        Reviewed by Darin Adler.

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

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

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

        Reviewed by Filip Pizlo and Yusuke Suzuki.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Alexey Shvayka.

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

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

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

        Reviewed by Alexey Shvayka.

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

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

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

        Reviewed by Michael Saboff.

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

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

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

        Reviewed by Mark Lam.

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

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

        Reviewed by Robin Morisset.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Tadeu Zagallo.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Unreviewed test gardening.

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

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

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

        Unreviewed gardening.

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

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

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

        Reviewed by Ryosuke Niwa.

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

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

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

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

        Reviewed by Mark Lam.

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

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

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

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

        Unreviewed test gardening.

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

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

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

        Unreviewed test gardening.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Unreviewed test gardening.

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

        * stress/intl-segmenter.js:

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

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

        Unreviewed test gardening.

        This appears to no longer fail.

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

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

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

        Unreviewed test gardening.

        * stress/intl-displaynames.js:

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

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

        Reviewed by Keith Miller.

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

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

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

        Reviewed by Saam Barati and Mark Lam.

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

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

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

        Reviewed by Ross Kirsling.

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

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

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

        Reviewed by Mark Lam.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

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

        Reviewed by Saam Barati.

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

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

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

        Reviewed by Yusuke Suzuki.

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

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

        Add tests for the new type method on certain JS-API wasm objects.
        https://bugs.webkit.org/show_bug.cgi?id=222412

        Reviewed by Yusuke Suzuki.

        * wasm/js-api/global.js: Added.
        (assert.throws):
        * wasm/js-api/table.js:
        (assert.truthy):
        * wasm/js-api/test_memory.js:

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

        Optimize createListFromArrayLike() and Proxy's [[OwnPropertyKeys]] method
        https://bugs.webkit.org/show_bug.cgi?id=223928

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/json-stringify-array-replacer.js:
        Reduce running time from over 350ms to ~60ms.

        * microbenchmarks/reflect-own-keys-proxy-2.js: Added.
        * microbenchmarks/reflect-own-keys-proxy.js: Added.

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

        Missing exception check in HashMapImpl::add().
        https://bugs.webkit.org/show_bug.cgi?id=224007
        rdar://76053163

        Reviewed by Saam Barati.

        * stress/missing-exception-check-in-HashMapImpl-add.js: Added.

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

        Optimize constructors of ES6 collections
        https://bugs.webkit.org/show_bug.cgi?id=223953

        Reviewed by Yusuke Suzuki.

        * microbenchmarks/map-constructor.js:
        * microbenchmarks/set-constructor.js: Added.
        * microbenchmarks/weak-map-constructor.js: Added.
        * microbenchmarks/weak-set-constructor.js: Added.
        * stress/map-constructor-adder.js:
        * stress/set-constructor-adder.js:
        * stress/weak-map-constructor-adder-error-cross-realm.js: Added.
        * stress/weak-map-constructor-adder.js:
        * stress/weak-set-constructor-adder-error-cross-realm.js: Added.
        * stress/weak-set-constructor-adder.js:
        * stress/weak-set-constructor.js:

2021-03-29  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed test gardening.

        * stress/early-return-from-builtin.js: Disable this test for memoryLimited configurations.

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

        [JSC] Use AppleICU SPI for canonicalization
        https://bugs.webkit.org/show_bug.cgi?id=223552

        Reviewed by Ryosuke Niwa.

        * stress/intl-canonical-locale-alias-mapping.js: Added.
        (shouldBe):
        (Intl.getCanonicalLocales):

2021-03-25  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r275056.

        This is no longer needed

        Reverted changeset:

        "stress/early-return-from-builtin.js.default is failing on iOS
        JSC testers"
        https://commits.webkit.org/r275056

2021-03-25  Truitt Savell  <tsavell@apple.com>

        stress/early-return-from-builtin.js.default is failing on iOS JSC testers
        rdar://75597901

        Unreviewed test gardening.

        * stress/early-return-from-builtin.js:

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

        early-return-from-builtin.js should try/catch in case of OOM
        https://bugs.webkit.org/show_bug.cgi?id=223756

        Reviewed by Yusuke Suzuki.

        It's throwing an OOM on iOS.

        * stress/early-return-from-builtin.js:

2021-03-24  Michael Saboff  <msaboff@apple.com>

        [YARR] Interpreter incorrectly matches non-BMP characters with multiple . w/dotAll flag
        https://bugs.webkit.org/show_bug.cgi?id=223666

        Reviewed by Mark Lam.

        Added tests for dotAll.  Also made sure that we test both JIT and non-JIT execution.

        * stress/regexp-dot-match-nonBMP.js:

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

        [JSC] Rope string equal operation should first check length
        https://bugs.webkit.org/show_bug.cgi?id=223678

        Reviewed by Mark Lam.

        * stress/redefine-property-same-value-exception-check.js:
        (shouldThrow):

2021-03-23  Robin Morisset  <rmorisset@apple.com>

        Object.freeze(this) at the global scope can lose a reference to a WatchpointSet
        https://bugs.webkit.org/show_bug.cgi?id=223608

        Reviewed by Yusuke Suzuki.

        * stress/freeze-global-object.js: Added.
        (foo):

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

        LiteralParser shouldn't make error messages of length ~2^31
        https://bugs.webkit.org/show_bug.cgi?id=223483
        <rdar://75572255>

        Reviewed by Robin Morisset.

        * stress/literal-parser-error-message-oom.js: Added.

2021-03-22  Michael Saboff  <msaboff@apple.com>

        [YARR] Interpreter incorrectly matches non-BMP characters with multiple .
        https://bugs.webkit.org/show_bug.cgi?id=223498

        Reviewed by Yusuke Suzuki.

        New test.

        * stress/regexp-dot-match-nonBMP.js: Added.
        (shouldMatch):
        (shouldntMatch):

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

        [JSC] Intl.Locale should not assume is8Bit
        https://bugs.webkit.org/show_bug.cgi?id=223553

        Reviewed by Ross Kirsling.

        * stress/intl-locale-non-8bit.js: Added.
        (shouldBe):

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

        BrandedStructure should keep its members alive.
        https://bugs.webkit.org/show_bug.cgi?id=223495
        rdar://75565765

        Reviewed by Saam Barati.

        * stress/BrandedStructure-should-keep-its-members-alive.js: Added.

== Rolled over to ChangeLog-2021-03-18 ==
