• jameslahm's avatar
    Reland "[interpreter] Optimize strict equal boolean" · fce1047f
    jameslahm authored
    This is a reland of commit 62632c08.
    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/+/3592039Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Jakob Linke <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#80141}
    fce1047f
Name
Last commit
Last update
..
ApiAccessors Loading commit data...
Array Loading commit data...
ArrayInOperator Loading commit data...
ArrayIndexOfIncludesPolymorphic Loading commit data...
ArrayLiteralInitialSpreadLargeDoubleHoley Loading commit data...
ArrayLiteralInitialSpreadLargeDoublePacked Loading commit data...
ArrayLiteralInitialSpreadLargeHoley Loading commit data...
ArrayLiteralInitialSpreadLargePacked Loading commit data...
ArrayLiteralInitialSpreadLargeSmiMap Loading commit data...
ArrayLiteralInitialSpreadLargeSmiSet Loading commit data...
ArrayLiteralInitialSpreadSmallDoubleHoley Loading commit data...
ArrayLiteralInitialSpreadSmallDoublePacked Loading commit data...
ArrayLiteralInitialSpreadSmallHoley Loading commit data...
ArrayLiteralInitialSpreadSmallPacked Loading commit data...
ArrayLiteralInitialSpreadSmallSmiMap Loading commit data...
ArrayLiteralInitialSpreadSmallSmiSet Loading commit data...
ArrayLiteralSpread Loading commit data...
ArraySort Loading commit data...
AsyncAwait Loading commit data...
BigInt Loading commit data...
BytecodeHandlers Loading commit data...
ClassFields Loading commit data...
Classes Loading commit data...
Closures Loading commit data...
Collections Loading commit data...
DataView Loading commit data...
Dates Loading commit data...
Exceptions Loading commit data...
ExpressionDepth Loading commit data...
ForLoops Loading commit data...
Generators Loading commit data...
IC Loading commit data...
Inspector Loading commit data...
InterpreterEntryTrampoline Loading commit data...
Intl Loading commit data...
Iterators Loading commit data...
Keys Loading commit data...
ManyClosures Loading commit data...
Modules Loading commit data...
Numbers Loading commit data...
Object Loading commit data...
ObjectDestructuringAssignment Loading commit data...
ObjectFreeze Loading commit data...
ObjectLiteralSpread Loading commit data...
Operators Loading commit data...
Parsing Loading commit data...
PropertyQueries Loading commit data...
Proxies Loading commit data...
RegExp Loading commit data...
RestParameters Loading commit data...
Scope Loading commit data...
SixSpeed Loading commit data...
SpreadCalls Loading commit data...
SpreadCallsGeneral Loading commit data...
StackTrace Loading commit data...
StringIterators Loading commit data...
Strings Loading commit data...
SuperIC Loading commit data...
SwitchStatements Loading commit data...
Templates Loading commit data...
TurboFan Loading commit data...
TypedArrays Loading commit data...
ClassFields.json Loading commit data...
JSTests1.json Loading commit data...
JSTests2.json Loading commit data...
JSTests3.json Loading commit data...
JSTests4.json Loading commit data...
JSTests5.json Loading commit data...
OWNERS Loading commit data...
RegExp.json Loading commit data...
SixSpeed.json Loading commit data...
SuperIC.json Loading commit data...
base.js Loading commit data...