[JSC] Use constants buffer in DFG
Created attachment 454645 [details] Patch
Created attachment 454648 [details] Patch
Created attachment 454649 [details] Patch
Created attachment 454802 [details] Patch
Created attachment 455044 [details] Patch
Created attachment 455072 [details] Patch
Created attachment 455076 [details] Patch
<rdar://problem/90606538>
I cancelled jsc builds https://ews-build.webkit.org/#/builders/46/builds/21500 and https://ews-build.webkit.org/#/builders/45/builds/12635 There were various segmentation faults in https://ews-build.webkit.org/#/builders/45/builds/12635/steps/15/logs/stdio. Please have a look it's that's because of the patch or not.
Created attachment 456680 [details] Patch
Created attachment 457299 [details] Patch
Pull request: https://github.com/WebKit/WebKit/pull/274
Pull request: https://github.com/WebKit/WebKit/pull/279
Committed r293009 (249748@main): <https://commits.webkit.org/249748@main> Reviewed commits have been landed. Closing PR #279 and removing active labels.
Committed r293020 (249759@trunk): <https://commits.webkit.org/249759@trunk>
This is not directly related to uDFG, but it seems that TempRegisterSet, ScratchRegisterAllocator etc. is heavily relying on a wrong implementation of GPRInfo::numberOfRegisters. TempRegisterSet can only accept register which is considered as a temp register in GPRInfo. But this does not work if we remove constants-buffer register from DFG & GPRInfo while using it in FTL. But fundamental problem is that TempRegisterSet and ScratchRegisterAllocator are relying on GPRInfo::numberOfRegisters since it is DFG specific information (and if we use it in IC, which can be used in FTL too, then we hit this crash). In ARM64, it does not have a problem since constants buffer register is not included anyway in GPRInfo::numberOfRegisters even before that