Bug 105226

Summary: DFG is too aggressive with eliding overflow checks in loops
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
the patch oliver: review+

Filip Pizlo
Reported 2012-12-17 16:06:25 PST
Example: function foo(a) { var x = a; // Make sure that this is the loop where we do OSR entry. for (var i = 0; i < 100000; ++i) x += 1; // Now trigger overflow that is so severe that the floating point result would be different than the bigint result. for (var i = 0; i < 160097152; ++i) x += 2147483647; return x | 0; } Calling foo(0) will return different results in the baseline JIT versus the DFG JIT. The baseline JIT will be right.
Attachments
the patch (3.59 KB, patch)
2012-12-17 16:09 PST, Filip Pizlo
oliver: review+
Filip Pizlo
Comment 1 2012-12-17 16:09:28 PST
Created attachment 179822 [details] the patch
Filip Pizlo
Comment 2 2012-12-17 17:37:23 PST
Note You need to log in before you can comment on or make changes to this bug.