Commit 2c6c36df authored by mhahnenberg@apple.com's avatar mhahnenberg@apple.com

DFG doesn't properly keep scope alive for op_put_to_scope

https://bugs.webkit.org/show_bug.cgi?id=121519

Reviewed by Michael Saboff.

This was a latent bug that can't actually occur in ToT. It was uncovered by causing slow
path calls in the baseline JIT for op_put_to_scope in places where we couldn't before (but
which were necessary for gen GC).

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156003 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 57e7b802
2013-09-17 Mark Hahnenberg <mhahnenberg@apple.com>
DFG doesn't properly keep scope alive for op_put_to_scope
https://bugs.webkit.org/show_bug.cgi?id=121519
Reviewed by Michael Saboff.
This was a latent bug that can't actually occur in ToT. It was uncovered by causing slow
path calls in the baseline JIT for op_put_to_scope in places where we couldn't before (but
which were necessary for gen GC).
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
2013-09-17 Filip Pizlo <fpizlo@apple.com>
Don't GC while OSR compiling
......
......@@ -3112,6 +3112,8 @@ bool ByteCodeParser::parseBlock(unsigned limit)
}
Node* base = cellConstantWithStructureCheck(globalObject, status.oldStructure());
handlePutByOffset(base, identifierNumber, static_cast<PropertyOffset>(operand), get(value));
// Keep scope alive until after put.
addToGraph(Phantom, get(scope));
break;
}
case GlobalVar:
......@@ -3119,6 +3121,8 @@ bool ByteCodeParser::parseBlock(unsigned limit)
SymbolTableEntry entry = globalObject->symbolTable()->get(uid);
ASSERT(!entry.couldBeWatched() || !m_graph.watchpoints().isStillValid(entry.watchpointSet()));
addToGraph(PutGlobalVar, OpInfo(operand), get(value));
// Keep scope alive until after put.
addToGraph(Phantom, get(scope));
break;
}
case ClosureVar:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment