| Summary: | [JSC] Add branchTest16 operation | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Dean Jackson <dino> | ||||||||||||||
| Component: | JavaScriptCore | Assignee: | Yusuke Suzuki <ysuzuki> | ||||||||||||||
| Status: | RESOLVED FIXED | ||||||||||||||||
| Severity: | Normal | CC: | darin, ews-watchlist, keith_miller, mark.lam, msaboff, saam, tzagallo, webkit-bug-importer, ysuzuki | ||||||||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||||||||
| Version: | WebKit Nightly Build | ||||||||||||||||
| Hardware: | Unspecified | ||||||||||||||||
| OS: | Unspecified | ||||||||||||||||
| Bug Depends on: | |||||||||||||||||
| Bug Blocks: | 233274 | ||||||||||||||||
| Attachments: |
|
||||||||||||||||
|
Description
Dean Jackson
2021-11-17 12:36:08 PST
Even if we had no plans to switch to OptionSet, we need branchTest16 to check a bit in a uint16_t, rather than relying on the accident that branchTest32 happens to work for this on little-endian platforms. I’m not sure that one patch needs to block the other. OptionSet would be no better or worse in this respect. But I agree we should do both things. Created attachment 444563 [details]
Patch
Created attachment 444566 [details]
Patch
Created attachment 444569 [details]
Patch
Created attachment 444602 [details]
Patch
Created attachment 444608 [details]
Patch
Created attachment 444614 [details]
Patch
Comment on attachment 444614 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=444614&action=review r=me with comments. > Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1800 > + // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/ /incase/in case/ and /branchTest16/branchTest32/ > Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1808 > + // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/ Ditto > Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1816 > + // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/ Ditto > Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2102 > + MacroAssemblerHelpers::load16OnCondition(*this, cond, address, dataTempRegister); > + return branchTest32(cond, dataTempRegister, mask16); Should these be using addrTempRegister also? Ditto below. Comment on attachment 444614 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=444614&action=review Thank you >> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1800 >> + // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/ > > /incase/in case/ and /branchTest16/branchTest32/ Fixed. >> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1808 >> + // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/ > > Ditto Fixed. >> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1816 >> + // use addressTempRegister incase the branchTest16 we call uses dataTempRegister. :-/ > > Ditto Fixed. >> Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2102 >> + return branchTest32(cond, dataTempRegister, mask16); > > Should these be using addrTempRegister also? Ditto below. MIPS is not using dataTempRegister in branchTest32 implementation so we can use it :) Committed r286020 (244409@main): <https://commits.webkit.org/244409@main> |