Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1bef55fa7ec3a5c431f24bc731e2ecaa01d97785
https://github.com/WebKit/WebKit/commit/1bef55fa7ec3a5c431f24bc731e2ecaa01d97785
Author: Yusuke Suzuki <[email protected]>
Date: 2024-09-19 (Thu, 19 Sep 2024)
Changed paths:
M Source/JavaScriptCore/b3/B3CheckSpecial.cpp
M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
Log Message:
-----------
[JSC] Support BranchSub32/64 3 operands
https://bugs.webkit.org/show_bug.cgi?id=279991
rdar://problem/136300288
Reviewed by Yijia Huang.
This patch extends CheckSpecial to handle 3-operands BranchSub32 /
BranchSub64. BranchSub32 / BranchSub64 need to have undo behavior
when speculation fails. But if it is emitted like
BranchSub32 %x0, %x0, %x0
There is no way to recover %x0 after this sub32 gets done. To avoid
this, we use EarlyDef for the destination register, which ensures that
we will never have conflicting register assginment with Use and Def.
Def is always not Use. So in the worst case,
BranchSub32 %x0, %x0, %x1
will be generated. And at that time, we can undo the behavior by doing
Add32 %x0, %x1
Also, EarlyDef ensures that any Use in stackmap for this patchpoint does
not get clobbered.
* Source/JavaScriptCore/b3/B3CheckSpecial.cpp:
(JSC::B3::CheckSpecial::forEachArg):
(JSC::B3::CheckSpecial::generate):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3LowerToAir32_64.cpp:
* Source/JavaScriptCore/b3/B3StackmapSpecial.cpp:
(WTF::printInternal):
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
Canonical link: https://commits.webkit.org/283978@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes