Title: [162953] branches/jsCStack/Source/_javascript_Core
Revision
162953
Author
fpi...@apple.com
Date
2014-01-28 13:31:17 -0800 (Tue, 28 Jan 2014)

Log Message

FTL should really support NotCellUse
https://bugs.webkit.org/show_bug.cgi?id=127789

Reviewed by Mark Hahnenberg.
        
This is for ValueToInt32(NotCell:). That support was added ages ago, and it even
works as demonstrated by the new test case.

* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* tests/stress/not-cell-use.js: Added.
(foo):
(bar):

Modified Paths

Added Paths

Diff

Modified: branches/jsCStack/Source/_javascript_Core/ChangeLog (162952 => 162953)


--- branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-28 21:26:23 UTC (rev 162952)
+++ branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-28 21:31:17 UTC (rev 162953)
@@ -1,3 +1,19 @@
+2014-01-28  Filip Pizlo  <fpi...@apple.com>
+
+        FTL should really support NotCellUse
+        https://bugs.webkit.org/show_bug.cgi?id=127789
+
+        Reviewed by Mark Hahnenberg.
+        
+        This is for ValueToInt32(NotCell:). That support was added ages ago, and it even
+        works as demonstrated by the new test case.
+
+        * ftl/FTLCapabilities.cpp:
+        (JSC::FTL::canCompile):
+        * tests/stress/not-cell-use.js: Added.
+        (foo):
+        (bar):
+
 2014-01-28  Michael Saboff  <msab...@apple.com>
 
         CStack Branch: Some LLInt symbols not declared extern "C"

Modified: branches/jsCStack/Source/_javascript_Core/ftl/FTLCapabilities.cpp (162952 => 162953)


--- branches/jsCStack/Source/_javascript_Core/ftl/FTLCapabilities.cpp	2014-01-28 21:26:23 UTC (rev 162952)
+++ branches/jsCStack/Source/_javascript_Core/ftl/FTLCapabilities.cpp	2014-01-28 21:31:17 UTC (rev 162953)
@@ -305,6 +305,7 @@
                 case StringObjectUse:
                 case StringOrStringObjectUse:
                 case FinalObjectUse:
+                case NotCellUse:
                     // These are OK.
                     break;
                 default:

Added: branches/jsCStack/Source/_javascript_Core/tests/stress/not-cell-use.js (0 => 162953)


--- branches/jsCStack/Source/_javascript_Core/tests/stress/not-cell-use.js	                        (rev 0)
+++ branches/jsCStack/Source/_javascript_Core/tests/stress/not-cell-use.js	2014-01-28 21:31:17 UTC (rev 162953)
@@ -0,0 +1,29 @@
+function foo(a, b, c) {
+    return (a|0) + (b|0) + (c|0);
+}
+
+function bar(o) {
+    var a = o.f;
+    var b = o.g;
+    var c = o.h;
+    var d = o.i;
+    var e = o.j;
+    var f = o.k;
+    var g = o.l;
+    return foo(42, void 0, void 0) + a + b + c + d + e + f + g;
+}
+
+noInline(foo);
+noInline(bar);
+
+for (var i = 0; i < 100000; ++i) {
+    var result = bar({
+        f:i * 3, g:i - 1, h:(i / 2)|0, i:-i, j:13 + ((i / 5)|0), k:14 - ((i / 6)|0),
+        l:1 - i});
+    
+    var expected = 42 + i * 3 + i - 1 + ((i / 2)|0) - i + 13 + ((i / 5)|0) + 14 -
+        ((i / 6)|0) + 1 - i;
+    
+    if (result != expected)
+        throw "Error: for iteration " + i + " expected " + expected + " but got " + result;
+}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to