v8/test/js-perf-test/JSTests3.json
jameslahm fce1047f00 Reland "[interpreter] Optimize strict equal boolean"
This is a reland of commit 62632c0805.
Reason for previous revert: Performance regressions crbug.com/1315724.
The reland only optimizes strict equal boolean literal like "a===true"
or "a===false", and we generate TestReferenceEqual rather than
TestStrictEqual for the comparasion. And also add typed optimization
for ReferenceEqual when all inputs are boolean with boolean constant.

Original change's description:
> [interpreter] Optimize strict equal boolean
>
> For strict equal boolean literal like "a===true"
> or "a===false", we could generate TestReferenceEqual
> rather than TestStrictEqual. And in `execution_result()->IsTest()`
> case, we could directly emit JumpIfTrue/JumpIfFalse.
>
> E.g.
> ```
> a === true
> ```
> Generated Bytecode From:
> ```
> LdaGlobal
> Star1
> LdaTrue
> TestEqualStrict
> ```
> To:
> ```
> LdaGlobal
> Star1
> LdaTrue
> TestReferenceEqual
> ```
>
> E.g.
> ```
> if (a === true)
> ```
> Generated Bytecode From:
> ```
> LdaGlobal
> Star1
> LdaTrue
> TestEqualStrict
> JumpIfFalse
> ```
> To
> ```
> LdaGlobal
> JumpIfTrue
> Jump
> ```
>
>
> Bug: v8:6403
> Change-Id: Ieaca147acd2d523ac0d2466e7861afb2d29a1310
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568923
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Commit-Queue: 王澳 <wangao.james@bytedance.com>
> Cr-Commit-Position: refs/heads/main@{#79935}

Bug: v8:6403
Change-Id: I2ae3ab57dce85313af200fa522e3632af5c3a554
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3592039
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#80141}
2022-04-25 10:02:05 +00:00

500 lines
18 KiB
JSON

{
"owners": ["jarin@chromium.org", "mvstanton@chromium.org"],
"name": "JSTests",
"run_count": 3,
"run_count_arm": 1,
"run_count_arm64": 1,
"timeout": 120,
"timeout_arm64": 240,
"units": "score",
"total": true,
"resources": ["base.js"],
"tests": [
{
"name": "ClassFields",
"path": ["ClassFields"],
"flags": ["--allow-natives-syntax"],
"resources": [ "evaluate-class.js", "initialize-instance.js", "classes.js" ],
"tests": [
{
"name": "EvaluateClassOpt",
"test_flags": [ "evaluate-class", "opt" ],
"main": "run.js",
"results_regexp": "^%s\\-ClassFields\\(Score\\): (.+)$",
"tests": [
{"name": "EvaluateSinglePublicFieldClassOpt"},
{"name": "EvaluateMultiPublicFieldClassOpt"},
{"name": "EvaluateSinglePrivateFieldClassOpt"},
{"name": "EvaluateMultiPrivateFieldClassOpt"},
{"name": "EvaluateSinglePrivateMethodClassOpt"},
{"name": "EvaluateMultiPrivateMethodClassOpt"},
{"name": "EvaluateSingleComputedFieldClassOpt"},
{"name": "EvaluateMultiComputedFieldClassOpt"}
]
},
{
"name": "EvaluateClassNoOpt",
"test_flags": [ "evaluate-class", "noopt" ],
"main": "run.js",
"results_regexp": "^%s\\-ClassFields\\(Score\\): (.+)$",
"tests": [
{"name": "EvaluateSinglePublicFieldClassNoOpt"},
{"name": "EvaluateMultiPublicFieldClassNoOpt"},
{"name": "EvaluateSinglePrivateFieldClassNoOpt"},
{"name": "EvaluateMultiPrivateFieldClassNoOpt"},
{"name": "EvaluateSinglePrivateMethodClassNoOpt"},
{"name": "EvaluateMultiPrivateMethodClassNoOpt"},
{"name": "EvaluateSingleComputedFieldClassNoOpt"},
{"name": "EvaluateMultiComputedFieldClassNoOpt"}
]
},
{
"name": "InitializeClassOpt",
"test_flags": [ "initialize-instance", "opt" ],
"main": "run.js",
"results_regexp": "^%s\\-ClassFields\\(Score\\): (.+)$",
"tests": [
{"name": "InitializeSinglePublicFieldClassOpt"},
{"name": "InitializeMultiPublicFieldClassOpt"},
{"name": "InitializeSinglePrivateFieldClassOpt"},
{"name": "InitializeMultiPrivateFieldClassOpt"},
{"name": "InitializeSinglePrivateMethodClassOpt"},
{"name": "InitializeMultiPrivateMethodClassOpt"},
{"name": "InitializeSingleComputedFieldClassOpt"},
{"name": "InitializeMultiComputedFieldClassOpt"}
]
},
{
"name": "InitializeClassNoOpt",
"test_flags": [ "initialize-instance", "noopt" ],
"main": "run.js",
"results_regexp": "^%s\\-ClassFields\\(Score\\): (.+)$",
"tests": [
{"name": "InitializeSinglePublicFieldClassNoOpt"},
{"name": "InitializeMultiPublicFieldClassNoOpt"},
{"name": "InitializeSinglePrivateFieldClassNoOpt"},
{"name": "InitializeMultiPrivateFieldClassNoOpt"},
{"name": "InitializeSinglePrivateMethodClassNoOpt"},
{"name": "InitializeMultiPrivateMethodClassNoOpt"},
{"name": "InitializeSingleComputedFieldClassNoOpt"},
{"name": "InitializeMultiComputedFieldClassNoOpt"}
]
}
]
},
{
"name": "ArrayLiteralInitialSpreadSmallDoubleHoley",
"path": ["ArrayLiteralInitialSpreadSmallDoubleHoley"],
"main": "run.js",
"resources": [],
"results_regexp": "^%s\\-ArrayLiteralInitialSpreadSmallDoubleHoley\\(Score\\): (.+)$",
"tests": [
{"name": "Spread"},
{"name": "ForLength"},
{"name": "ForLengthEmpty"},
{"name": "Slice"},
{"name": "Slice0"},
{"name": "ConcatReceive"},
{"name": "ConcatArg"},
{"name": "ForOfPush"},
{"name": "MapId"}
]
},
{
"name": "Strings",
"path": ["Strings"],
"run_count": 1,
"timeout": 240,
"timeout_arm": 420,
"units": "score",
"tests": [
{
"name": "StringFunctions",
"main": "run.js",
"resources": [ "harmony-string.js" ],
"test_flags": [ "harmony-string" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringRepeat"},
{"name": "StringStartsWith"},
{"name": "StringEndsWith"},
{"name": "StringIncludes"},
{"name": "StringFromCodePoint"},
{"name": "StringCodePointAt"},
{"name": "StringCodePointAtSum"}
]
},
{
"name": "StringIndexOf",
"main": "run.js",
"resources": [ "string-indexof.js" ],
"test_flags": [ "string-indexof" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringIndexOfConstant"},
{"name": "StringIndexOfNonConstant"}
]
},
{
"name": "StringSplit",
"main": "run.js",
"resources": [ "string-split.js" ],
"test_flags": [ "string-split" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "ShortSubjectEmptySeparator"},
{"name": "LongSubjectEmptySeparator"},
{"name": "ShortTwoBytesSubjectEmptySeparator"},
{"name": "LongTwoBytesSubjectEmptySeparator"},
{"name": "ShortSubject"},
{"name": "LongSubject"},
{"name": "ShortTwoBytesSubject"},
{"name": "LongTwoBytesSubject"}
]
},
{
"name": "StringAt",
"main": "run.js",
"resources": [ "string-stringat.js" ],
"test_flags": [ "string-stringat" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringCharCodeAtConstant"},
{"name": "StringCharCodeAtNonConstant"},
{"name": "StringCharCodeAtConstantInbounds"},
{"name": "StringCharCodeAtNonConstantInbounds"},
{"name": "StringCodePointAtConstant"},
{"name": "StringCodePointAtNonConstant"},
{"name": "StringCodePointAtConstantInbounds"},
{"name": "StringCodePointAtNonConstantInbounds"}
]
},
{
"name": "StringAtComparison",
"main": "run.js",
"resources": [ "string-stringat-comp.js" ],
"test_flags": [ "string-stringat-comp" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "charCodeAt_const"},
{"name": "charCodeAt_both"},
{"name": "charAt_const"},
{"name": "charAt_never"},
{"name": "charAt_both"},
{"name": "stringIndex_const"}
]
},
{
"name": "StringNormalize",
"main": "run.js",
"resources": [ "string-normalize.js" ],
"test_flags": [ "string-normalize" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringNormalize"},
{"name": "StringNormalizeNFD"},
{"name": "StringNormalizeNFKC"},
{"name": "StringNormalizeNFKD"}
]
},
{
"name": "StringLocaleCompare",
"main": "run.js",
"resources": [ "string-localeCompare.js" ],
"test_flags": [ "string-localeCompare" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringLocaleCompare"}
]
},
{
"name": "StringToLocaleCase",
"main": "run.js",
"resources": [ "string-toLocaleCase.js" ],
"test_flags": [ "string-toLocaleCase" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringToLocaleLowerCase"},
{"name": "StringToLocaleUpperCase"},
{"name": "StringToLocaleLowerCaseTR"},
{"name": "StringToLocaleUpperCaseTR"}
]
},
{
"name": "StringMatchAll",
"main": "run.js",
"resources": [ "string-matchall.js" ],
"test_flags": [ "string-matchall" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringMatchAllBuiltinRegExpIteratorCreation"},
{"name": "StringMatchAllBuiltinStringIteratorCreation"},
{"name": "StringMatchAllBuiltinString"},
{"name": "StringMatchAllManualString"},
{"name": "StringMatchAllBuiltinRegExp"},
{"name": "StringMatchAllManualRegExp"},
{"name": "StringMatchAllBuiltinZeroWidth"},
{"name": "StringMatchAllBuiltinZeroWidthUnicode"}
]
},
{
"name": "StringStartsEndsWithComparison",
"main": "run.js",
"resources": [ "string-startsendswith-comp.js" ],
"test_flags": [ "string-startsendswith-comp" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "startsWith"},
{"name": "startsIndex"},
{"name": "endsWith"},
{"name": "endsIndex"}
]
},
{
"name": "StringStartsWith",
"main": "run.js",
"resources": [ "string-startswith.js" ],
"test_flags": [ "string-startswith" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"flags": [ "--allow-natives-syntax" ],
"tests": [
{"name": "DirectStringsDirectSearch"},
{"name": "ConsStringsDirectSearch"},
{"name": "DirectStringsConsSearch"},
{"name": "ConsStringsConsSearch"}
]
},
{
"name": "StringSubstring",
"main": "run.js",
"resources": [ "string-substring.js" ],
"test_flags": [ "string-substring" ],
"results_regexp": "^%s\\-Strings\\(Score\\): (.+)$",
"run_count": 1,
"tests": [
{"name": "StringDropFirstSlice"},
{"name": "StringDropFirstSubstr"},
{"name": "StringDropFirstSubstring"},
{"name": "StringTakeFirstSlice"},
{"name": "StringTakeFirstSubstr"},
{"name": "StringTakeFirstSubstring"},
{"name": "StringDropLastSlice"},
{"name": "StringDropLastSubstr"},
{"name": "StringDropLastSubstring"},
{"name": "StringTakeLastSlice"},
{"name": "StringTakeLastSubstr"},
{"name": "StringTakeLastSubstring"}
]
}
]
},
{
"name": "BytecodeHandlers",
"path": ["BytecodeHandlers"],
"flags": [ "--no-opt" ],
"tests": [
{
"name": "Compare",
"main": "run.js",
"resources": [ "compare.js" ],
"test_flags": [ "compare" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"tests": [
{"name": "Smi-StrictEquals-True"},
{"name": "Smi-StrictEquals-False"},
{"name": "Number-StrictEquals-True"},
{"name": "Number-StrictEquals-False"},
{"name": "String-StrictEquals-True"},
{"name": "String-StrictEquals-False"},
{"name": "SmiString-StrictEquals"},
{"name": "Boolean-StrictEquals"},
{"name": "Smi-Equals-True"},
{"name": "Smi-Equals-False"},
{"name": "Number-Equals-True"},
{"name": "Number-Equals-False"},
{"name": "String-Equals-True"},
{"name": "String-Equals-False"},
{"name": "ObjectNull-Equals"},
{"name": "SmiString-Equals"},
{"name": "Smi-RelationalCompare"},
{"name": "Number-RelationalCompare"},
{"name": "String-RelationalCompare"},
{"name": "SmiString-RelationalCompare"}
]
},
{
"name": "StringConcat",
"main": "run.js",
"resources": [ "string-concat.js" ],
"test_flags": [ "string-concat" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"tests": [
{"name": "ShortString-StringConcat-2"},
{"name": "ShortString-StringConcat-3"},
{"name": "ShortString-StringConcat-5"},
{"name": "ShortString-StringConcat-10"},
{"name": "LongString-StringConcat-2"},
{"name": "LongString-StringConcat-3"},
{"name": "LongString-StringConcat-5"},
{"name": "LongString-StringConcat-10"},
{"name": "NumberString-StringConcat-2"},
{"name": "NumberString-StringConcat-3"},
{"name": "NumberString-StringConcat-5"},
{"name": "NumberString-StringConcat-10"}
]
},
{
"name": "Arithmetic",
"main": "run.js",
"resources": [ "arithmetic.js" ],
"test_flags": [ "arithmetic" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"timeout": 240,
"tests": [
{"name": "Smi-Add"},
{"name": "Number-Add"},
{"name": "Number-Oddball-Add"},
{"name": "String-Add"},
{"name": "Object-Add"},
{"name": "Number-String-Add"},
{"name": "Smi-Sub"},
{"name": "Number-Sub"},
{"name": "Number-Oddball-Sub"},
{"name": "Object-Sub"},
{"name": "Smi-Mul"},
{"name": "Number-Mul"},
{"name": "Number-Oddball-Mul"},
{"name": "Object-Mul"},
{"name": "Smi-Div"},
{"name": "Number-Div"},
{"name": "Number-Oddball-Div"},
{"name": "Object-Div"},
{"name": "Smi-Mod"},
{"name": "Number-Mod"},
{"name": "Number-Oddball-Mod"},
{"name": "Object-Mod"},
{"name": "Smi-Constant-Add"},
{"name": "Smi-Constant-Sub"},
{"name": "Smi-Constant-Mul"},
{"name": "Smi-Constant-Div"},
{"name": "Smi-Constant-Mod"},
{"name": "Smi-Increment"},
{"name": "Number-Increment"},
{"name": "Smi-Decrement"},
{"name": "Number-Decrement"}
]
},
{
"name": "Bitwise",
"main": "run.js",
"resources": [ "bitwise.js" ],
"test_flags": [ "bitwise" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"tests": [
{"name": "Smi-Or"},
{"name": "Number-Or"},
{"name": "Smi-Xor"},
{"name": "Number-Xor"},
{"name": "Smi-And"},
{"name": "Number-And"},
{"name": "Smi-Constant-Or"},
{"name": "Smi-Constant-Xor"},
{"name": "Smi-Constant-And"},
{"name": "Smi-ShiftLeft"},
{"name": "Number-ShiftLeft"},
{"name": "Smi-ShiftRight"},
{"name": "Number-ShiftRight"},
{"name": "Smi-ShiftRightLogical"},
{"name": "Number-ShiftRightLogical"},
{"name": "Smi-Constant-ShiftLeft"},
{"name": "Smi-Constant-ShiftRight"},
{"name": "Smi-Constant-ShiftRightLogical"}
]
},
{
"name": "GetNamedProperty",
"main": "run.js",
"resources": [ "GetNamedProperty.js" ],
"test_flags": [ "GetNamedProperty" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"tests": [
{"name": "Smi-Value"},
{"name": "Prototype-Chain-Value"}
]
},
{
"name": "GetKeyedProperty",
"main": "run.js",
"resources": [ "GetKeyedProperty.js" ],
"test_flags": [ "GetKeyedProperty" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"tests": [
{"name": "Object-Lookup-String-Constant"},
{"name": "Object-Lookup-Index-Number"},
{"name": "Object-Lookup-Index-String"}
]
},
{
"name": "LdaGlobal",
"main": "run.js",
"resources": [ "LdaGlobal.js" ],
"test_flags": [ "LdaGlobal" ],
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
"tests": [
{"name": "LoadGlobal"},
{"name": "LoadGlobalInsideTypeof"}
]
}
]
},
{
"name": "InterpreterEntryTrampoline",
"path": ["InterpreterEntryTrampoline"],
"flags": ["--no-opt"],
"tests": [
{
"name": "Arguments",
"main": "run.js",
"resources": [ "arguments.js" ],
"test_flags": [ "arguments" ],
"results_regexp": "^%s\\-InterpreterEntryTrampoline\\(Score\\): (.+)$",
"tests": [
{"name": "Calls-No-Argument"},
{"name": "Calls-One-Argument"},
{"name": "Calls-Six-Arguments"},
{"name": "Calls-With-Receiver"}
]
},
{
"name": "Locals",
"main": "run.js",
"resources": [ "locals.js" ],
"test_flags": [ "locals" ],
"results_regexp": "^%s\\-InterpreterEntryTrampoline\\(Score\\): (.+)$",
"tests": [
{"name": "Calls-No-Argument"},
{"name": "Calls-No-Argument-1-Local"},
{"name": "Calls-No-Argument-2-Locals"},
{"name": "Calls-No-Argument-3-Locals"},
{"name": "Calls-No-Argument-4-Locals"},
{"name": "Calls-No-Argument-5-Locals"},
{"name": "Calls-No-Argument-10-Locals"},
{"name": "Calls-No-Argument-100-Locals"}
]
}
]
}
]
}