Title: [195845] trunk/Source/_javascript_Core
- Revision
- 195845
- Author
- fpi...@apple.com
- Date
- 2016-01-29 15:10:39 -0800 (Fri, 29 Jan 2016)
Log Message
Air:fixObviousSpills should handle floats and doubles
https://bugs.webkit.org/show_bug.cgi?id=153197
Reviewed by Saam Barati.
This adds the most obvious handling of float spills, where we just enable load elimination on
float spill code.
* b3/air/AirFixObviousSpills.cpp:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (195844 => 195845)
--- trunk/Source/_javascript_Core/ChangeLog 2016-01-29 23:06:29 UTC (rev 195844)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-01-29 23:10:39 UTC (rev 195845)
@@ -1,3 +1,15 @@
+2016-01-29 Filip Pizlo <fpi...@apple.com>
+
+ Air:fixObviousSpills should handle floats and doubles
+ https://bugs.webkit.org/show_bug.cgi?id=153197
+
+ Reviewed by Saam Barati.
+
+ This adds the most obvious handling of float spills, where we just enable load elimination on
+ float spill code.
+
+ * b3/air/AirFixObviousSpills.cpp:
+
2016-01-29 Andreas Kling <akl...@apple.com>
Shrink CodeBlock!
Modified: trunk/Source/_javascript_Core/b3/air/AirFixObviousSpills.cpp (195844 => 195845)
--- trunk/Source/_javascript_Core/b3/air/AirFixObviousSpills.cpp 2016-01-29 23:06:29 UTC (rev 195844)
+++ trunk/Source/_javascript_Core/b3/air/AirFixObviousSpills.cpp 2016-01-29 23:10:39 UTC (rev 195845)
@@ -120,9 +120,6 @@
m_state.clobber(arg);
});
- // FIXME: This needs a story for floats and doubles.
- // https://bugs.webkit.org/show_bug.cgi?id=153197
-
switch (inst.opcode) {
case Move:
if (inst.args[0].isSomeImm()) {
@@ -162,6 +159,26 @@
}
break;
+ case MoveFloat:
+ if (isSpillSlot(inst.args[0]) && inst.args[1].isReg()) {
+ m_state.addAlias(
+ RegSlot(inst.args[1].reg(), inst.args[0].stackSlot(), RegSlot::Match32));
+ } else if (inst.args[0].isReg() && isSpillSlot(inst.args[1])) {
+ m_state.addAlias(
+ RegSlot(inst.args[0].reg(), inst.args[1].stackSlot(), RegSlot::Match32));
+ }
+ break;
+
+ case MoveDouble:
+ if (isSpillSlot(inst.args[0]) && inst.args[1].isReg()) {
+ m_state.addAlias(
+ RegSlot(inst.args[1].reg(), inst.args[0].stackSlot(), RegSlot::AllBits));
+ } else if (inst.args[0].isReg() && isSpillSlot(inst.args[1])) {
+ m_state.addAlias(
+ RegSlot(inst.args[0].reg(), inst.args[1].stackSlot(), RegSlot::AllBits));
+ }
+ break;
+
default:
break;
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes