Repository navigation
Commit f40dcdd
committed
[JSC] LLInt prologue should zero the new frame 16 bytes per iteration
https://bugs.webkit.org/show_bug.cgi?id=320799
Reviewed by Yusuke Suzuki.
The LLInt prologue's frame-clearing loop from 199147@main zeroes the frame 8 bytes
per top-tested iteration, and on ARM64 the immediate store re-materializes zero
every iteration: 12 instructions per 16 bytes.
Both bounds are stack-aligned (numCalleeLocals is always rounded to
stackAlignmentRegisters and sp is aligned before the loop), so hoist the zero
register and store 16 bytes per bottom-tested iteration (stp on ARM64, two
storeq on X86_64): 4 instructions per 16 bytes on ARM64, 5 on X86_64.
* Source/JavaScriptCore/llint/LowLevelInterpreter.asm:
Canonical link: https://commits.webkit.org/318432@main1 parent 5d6747e commit f40dcdd
1 file changed
Lines changed: 14 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1569 | 1569 | | |
1570 | 1570 | | |
1571 | 1571 | | |
1572 | | - | |
1573 | | - | |
1574 | | - | |
1575 | | - | |
1576 | | - | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
1577 | 1586 | | |
1578 | 1587 | | |
1579 | 1588 | | |
| |||
0 commit comments