Current silentSpillGPR/silentFillGPR may not work as expected for some cases in 32_64. If there's a JSValue which was retained by two GPRs, we may end up failing to spill/fill some GPRs or redundantly spilling/filling some GPRs. For example, if we tend to exclude "eax" from spilling while a JSValue is retained by both "eax" and "edx", then "edx" won't be spilled as well (wrong). And if another JSValue is retained by "ecx" and "ebx", both "ecx" and "ebx" will be spilled twice. The similar problem applies to silentFillGPR. The fix is to make silentSpillGPR/silentFillGPR more straightforward, i.e., spilling/filling based on the GPR instead of the virtual register. FPR spilling/filling is also modified accordingly to make it consistent with GPR spilling/filling.
Created attachment 114812 [details] the patch
Comment on attachment 114812 [details] the patch Clearing flags on attachment: 114812 Committed r100095: <http://trac.webkit.org/changeset/100095>
All reviewed patches have been landed. Closing bug.