Bug 89953

Summary: New fast/js/dfg-store-unexpected-value-into-argument-and-osr-exit.html fails on 32 bit
Product: WebKit Reporter: Csaba Osztrogonác <ossy>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, fpizlo, mrobinson, ossy, pnormand, pvarga, webkit.review.bot, zan, zherczeg
Priority: P2 Keywords: Qt, QtTriaged
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 87008, 89802    
Attachments:
Description Flags
the patch none

Description Csaba Osztrogonác 2012-06-26 00:42:17 PDT
It is a new test introduced in http://trac.webkit.org/changeset/121215
and fails on 32 bit platforms. (Qt and GTK)

--- /ramdisk/qt-linux-32-release-webkit2/build/layout-test-results/fast/js/dfg-store-unexpected-value-into-argument-and-osr-exit-expected.txt 
+++ /ramdisk/qt-linux-32-release-webkit2/build/layout-test-results/fast/js/dfg-store-unexpected-value-into-argument-and-osr-exit-actual.txt 
@@ -153,56 +153,56 @@
 PASS foo(3, {f:f, g:g}, p) is 85
 PASS foo(3, {f:f, g:g}, p) is 1
 PASS foo(3, {f:f, g:g}, p) is 85
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
-PASS foo(3, {f:f, g:g}, p) is 0.5
-PASS foo(3, {f:f, g:g}, p) is 85.5
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 0.5. Was 43.
+FAIL foo(3, {f:f, g:g}, p) should be 85.5. Was 43.
 PASS successfullyParsed is true
 
 TEST COMPLETE
Comment 1 Filip Pizlo 2012-06-26 00:43:58 PDT
Oh no!  Fix on the way...
Comment 2 Filip Pizlo 2012-06-26 01:00:21 PDT
Oh wow, good thing I wrote that test.

Looks like the 32-bit DFG was assuming totally bad things about the types of local variables.

Patch forthcoming.
Comment 3 Filip Pizlo 2012-06-26 01:10:09 PDT
Created attachment 149475 [details]
the patch

This ought to do it.
Comment 4 Csaba Osztrogonác 2012-06-26 02:07:50 PDT
All tests pass on 32 bit Qt with this patch. Thanks for the fix.
Comment 5 WebKit Review Bot 2012-06-26 02:23:02 PDT
Comment on attachment 149475 [details]
the patch

Clearing flags on attachment: 149475

Committed r121243: <http://trac.webkit.org/changeset/121243>
Comment 6 WebKit Review Bot 2012-06-26 02:23:08 PDT
All reviewed patches have been landed.  Closing bug.