diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-14 16:29:47 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-14 16:29:47 +0200 |
commit | d0424a769059c84ae20beb3c217812792ea6726b (patch) | |
tree | 6f94a5c3db8c52c6694ee56498542a6c35417350 /Source/JavaScriptCore/dfg/DFGAbstractState.cpp | |
parent | 88a04ac016f57c2d78e714682445dff2e7db4ade (diff) | |
download | qtwebkit-d0424a769059c84ae20beb3c217812792ea6726b.tar.gz |
Imported WebKit commit 37c5e5041d39a14ea0d429a77ebd352e4bd26516 (http://svn.webkit.org/repository/webkit/trunk@128608)
New snapshot that enables WebKit2 build on Windows (still some bugs) and allows for WebKit to be built with qmake && make
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGAbstractState.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGAbstractState.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGAbstractState.cpp b/Source/JavaScriptCore/dfg/DFGAbstractState.cpp index 5f79f666f..b860a7310 100644 --- a/Source/JavaScriptCore/dfg/DFGAbstractState.cpp +++ b/Source/JavaScriptCore/dfg/DFGAbstractState.cpp @@ -852,11 +852,11 @@ bool AbstractState::execute(unsigned indexInBlock) forNode(node.child2()).filter(SpecInt32); forNode(nodeIndex).makeTop(); break; - case Array::JSArray: + case IN_BOUNDS_ARRAY_STORAGE_MODES: forNode(node.child2()).filter(SpecInt32); forNode(nodeIndex).makeTop(); break; - case Array::JSArrayOutOfBounds: + case OUT_OF_BOUNDS_ARRAY_STORAGE_MODES: forNode(node.child2()).filter(SpecInt32); clobberWorld(node.codeOrigin, indexInBlock); forNode(nodeIndex).makeTop(); @@ -916,10 +916,10 @@ bool AbstractState::execute(unsigned indexInBlock) case Array::Generic: clobberWorld(node.codeOrigin, indexInBlock); break; - case Array::JSArray: + case IN_BOUNDS_ARRAY_STORAGE_MODES: forNode(child2).filter(SpecInt32); break; - case Array::JSArrayOutOfBounds: + case OUT_OF_BOUNDS_ARRAY_STORAGE_MODES: forNode(child2).filter(SpecInt32); clobberWorld(node.codeOrigin, indexInBlock); break; @@ -1341,7 +1341,7 @@ bool AbstractState::execute(unsigned indexInBlock) forNode(node.child1()).set(node.structureTransitionData().newStructure); m_haveStructures = true; break; - case GetPropertyStorage: + case GetButterfly: case AllocatePropertyStorage: case ReallocatePropertyStorage: node.setCanExit(false); @@ -1359,8 +1359,7 @@ bool AbstractState::execute(unsigned indexInBlock) case Array::String: forNode(node.child1()).filter(SpecString); break; - case Array::JSArray: - case Array::JSArrayOutOfBounds: + case ALL_ARRAY_STORAGE_MODES: // This doesn't filter anything meaningful right now. We may want to add // CFA tracking of array mode speculations, but we don't have that, yet. forNode(node.child1()).filter(SpecCell); @@ -1523,11 +1522,14 @@ inline void AbstractState::clobberCapturedVars(const CodeOrigin& codeOrigin) m_variables.local(i).makeTop(); } } else { - for (size_t i = m_codeBlock->m_numCapturedVars; i--;) - m_variables.local(i).makeTop(); + for (size_t i = m_codeBlock->m_numVars; i--;) { + if (m_codeBlock->isCaptured(i)) + m_variables.local(i).makeTop(); + } } - if (m_codeBlock->argumentsAreCaptured()) { - for (size_t i = m_variables.numberOfArguments(); i--;) + + for (size_t i = m_variables.numberOfArguments(); i--;) { + if (m_codeBlock->isCaptured(argumentToOperand(i))) m_variables.argument(i).makeTop(); } } |