Title: [245447] releases/WebKitGTK/webkit-2.24
Revision
245447
Author
[email protected]
Date
2019-05-17 04:24:54 -0700 (Fri, 17 May 2019)

Log Message

Merge r245051 - [JSC] DFG_ASSERT failed in lowInt52
https://bugs.webkit.org/show_bug.cgi?id=197569

Reviewed by Saam Barati.

JSTests:

* stress/getstack-int52.js: Added.
(opt):
(main):

Source/_javascript_Core:

GetStack with FlushedInt52 should load the flushed value in Int52 form and put the result in m_int52Values / m_strictInt52Values. Previously,
we load it in JSValue / Int32 form and lowInt52 fails to get appropriate one since GetStack does not put the result in m_int52Values / m_strictInt52Values.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetStack):

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.24/JSTests/ChangeLog (245446 => 245447)


--- releases/WebKitGTK/webkit-2.24/JSTests/ChangeLog	2019-05-17 11:24:49 UTC (rev 245446)
+++ releases/WebKitGTK/webkit-2.24/JSTests/ChangeLog	2019-05-17 11:24:54 UTC (rev 245447)
@@ -1,3 +1,14 @@
+2019-05-07  Yusuke Suzuki  <[email protected]>
+
+        [JSC] DFG_ASSERT failed in lowInt52
+        https://bugs.webkit.org/show_bug.cgi?id=197569
+
+        Reviewed by Saam Barati.
+
+        * stress/getstack-int52.js: Added.
+        (opt):
+        (main):
+
 2019-05-06  Yusuke Suzuki  <[email protected]>
 
         [JSC] We should check OOM for description string of Symbol

Added: releases/WebKitGTK/webkit-2.24/JSTests/stress/getstack-int52.js (0 => 245447)


--- releases/WebKitGTK/webkit-2.24/JSTests/stress/getstack-int52.js	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.24/JSTests/stress/getstack-int52.js	2019-05-17 11:24:54 UTC (rev 245447)
@@ -0,0 +1,26 @@
+//@ runDefault("--useConcurrentJIT=0")
+
+function opt(arr, start, end) {
+    parseInt();
+    for (var i = start; i < end; i++) {
+        if (i === 10) {
+            end |= 0;
+        }
+        arr[i] = 2.3023e-320;
+    }
+}
+
+function main() {
+    let arr = new Array(1000);
+    arr.fill(1.1);
+
+    for (let i = 0; i < 10000; i++) {
+        opt(arr, 0, 1000);
+    }
+
+    opt(arr, 0, 100000);
+    opt(arr, 0, 0x80000001);
+}
+
+main();
+main();

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ChangeLog (245446 => 245447)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ChangeLog	2019-05-17 11:24:49 UTC (rev 245446)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ChangeLog	2019-05-17 11:24:54 UTC (rev 245447)
@@ -1,3 +1,16 @@
+2019-05-07  Yusuke Suzuki  <[email protected]>
+
+        [JSC] DFG_ASSERT failed in lowInt52
+        https://bugs.webkit.org/show_bug.cgi?id=197569
+
+        Reviewed by Saam Barati.
+
+        GetStack with FlushedInt52 should load the flushed value in Int52 form and put the result in m_int52Values / m_strictInt52Values. Previously,
+        we load it in JSValue / Int32 form and lowInt52 fails to get appropriate one since GetStack does not put the result in m_int52Values / m_strictInt52Values.
+
+        * ftl/FTLLowerDFGToB3.cpp:
+        (JSC::FTL::DFG::LowerDFGToB3::compileGetStack):
+
 2019-05-06  Yusuke Suzuki  <[email protected]>
 
         [JSC] We should check OOM for description string of Symbol

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp (245446 => 245447)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2019-05-17 11:24:49 UTC (rev 245446)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp	2019-05-17 11:24:54 UTC (rev 245447)
@@ -1765,12 +1765,20 @@
         
         DFG_ASSERT(m_graph, m_node, isConcrete(data->format), data->format);
         
-        if (data->format == FlushedDouble)
+        switch (data->format) {
+        case FlushedDouble:
             setDouble(m_out.loadDouble(addressFor(data->machineLocal)));
-        else if (isInt32Speculation(value.m_type))
-            setInt32(m_out.load32(payloadFor(data->machineLocal)));
-        else
-            setJSValue(m_out.load64(addressFor(data->machineLocal)));
+            break;
+        case FlushedInt52:
+            setInt52(m_out.load64(addressFor(data->machineLocal)));
+            break;
+        default:
+            if (isInt32Speculation(value.m_type))
+                setInt32(m_out.load32(payloadFor(data->machineLocal)));
+            else
+                setJSValue(m_out.load64(addressFor(data->machineLocal)));
+            break;
+        }
     }
     
     void compilePutStack()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to