Title: [139540] trunk/Source/_javascript_Core
- Revision
- 139540
- Author
- fpi...@apple.com
- Date
- 2013-01-11 20:22:32 -0800 (Fri, 11 Jan 2013)
Log Message
If you use Phantom to force something to be live across an OSR exit, you should put it after the OSR exit
https://bugs.webkit.org/show_bug.cgi?id=106724
Reviewed by Oliver Hunt.
In cases where we were getting it wrong, I think it was benign because we would either already have an
OSR exit prior to there, or the operand would be a constant. But still, it's good to get this right.
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (139539 => 139540)
--- trunk/Source/_javascript_Core/ChangeLog 2013-01-12 03:49:00 UTC (rev 139539)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-01-12 04:22:32 UTC (rev 139540)
@@ -1,5 +1,18 @@
2013-01-11 Filip Pizlo <fpi...@apple.com>
+ If you use Phantom to force something to be live across an OSR exit, you should put it after the OSR exit
+ https://bugs.webkit.org/show_bug.cgi?id=106724
+
+ Reviewed by Oliver Hunt.
+
+ In cases where we were getting it wrong, I think it was benign because we would either already have an
+ OSR exit prior to there, or the operand would be a constant. But still, it's good to get this right.
+
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::parseBlock):
+
+2013-01-11 Filip Pizlo <fpi...@apple.com>
+
Phantom(GetLocal) should be treated as relevant to OSR
https://bugs.webkit.org/show_bug.cgi?id=106715
Modified: trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp (139539 => 139540)
--- trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp 2013-01-12 03:49:00 UTC (rev 139539)
+++ trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp 2013-01-12 04:22:32 UTC (rev 139540)
@@ -3013,15 +3013,14 @@
PutToBaseOperation* putToBase = m_codeBlock->putToBaseOperation(operation);
if (putToBase->m_isDynamic) {
- addToGraph(Phantom, get(base));
addToGraph(PutById, OpInfo(identifier), get(base), get(value));
NEXT_OPCODE(op_put_to_base);
}
switch (putToBase->m_kind) {
case PutToBaseOperation::Uninitialised:
- addToGraph(Phantom, get(base));
addToGraph(ForceOSRExit);
+ addToGraph(Phantom, get(base));
break;
case PutToBaseOperation::GlobalVariablePutChecked: {
@@ -3049,8 +3048,8 @@
}
case PutToBaseOperation::GlobalPropertyPut: {
if (!putToBase->m_structure) {
- addToGraph(Phantom, get(base));
addToGraph(ForceOSRExit);
+ addToGraph(Phantom, get(base));
NEXT_OPCODE(op_put_to_base);
}
NodeIndex baseNode = get(base);
@@ -3070,7 +3069,6 @@
}
case PutToBaseOperation::Readonly:
case PutToBaseOperation::Generic:
- addToGraph(Phantom, get(base));
addToGraph(PutById, OpInfo(identifier), get(base), get(value));
}
NEXT_OPCODE(op_put_to_base);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes