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