Bug 72201

Summary: Fix silent spilling/filling GPRs in DFG 32_64
Product: WebKit Reporter: Yuqiang Xian <yuqiang.xian>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, fpizlo, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
the patch none

Description Yuqiang Xian 2011-11-11 18:52:12 PST
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.
Comment 1 Yuqiang Xian 2011-11-11 18:57:50 PST
Created attachment 114812 [details]
the patch
Comment 2 WebKit Review Bot 2011-11-13 14:44:33 PST
Comment on attachment 114812 [details]
the patch

Clearing flags on attachment: 114812

Committed r100095: <http://trac.webkit.org/changeset/100095>
Comment 3 WebKit Review Bot 2011-11-13 14:44:37 PST
All reviewed patches have been landed.  Closing bug.