diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
commit | a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch) | |
tree | b7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/JavaScriptCore/dfg/DFGBasicBlock.h | |
parent | 8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff) | |
download | qtwebkit-a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd.tar.gz |
Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516)
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGBasicBlock.h')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGBasicBlock.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGBasicBlock.h b/Source/JavaScriptCore/dfg/DFGBasicBlock.h index 92df58d09..9128f0882 100644 --- a/Source/JavaScriptCore/dfg/DFGBasicBlock.h +++ b/Source/JavaScriptCore/dfg/DFGBasicBlock.h @@ -44,6 +44,7 @@ struct BasicBlock : Vector<NodeIndex, 8> { , isOSRTarget(false) , cfaHasVisited(false) , cfaShouldRevisit(false) + , cfaFoundConstants(false) #if !ASSERT_DISABLED , isLinked(false) #endif @@ -55,6 +56,10 @@ struct BasicBlock : Vector<NodeIndex, 8> { { } + ~BasicBlock() + { + } + void ensureLocals(unsigned newNumLocals) { variablesAtHead.ensureLocals(newNumLocals); @@ -62,6 +67,33 @@ struct BasicBlock : Vector<NodeIndex, 8> { valuesAtHead.ensureLocals(newNumLocals); valuesAtTail.ensureLocals(newNumLocals); } + + size_t numNodes() const { return phis.size() + size(); } + NodeIndex nodeIndex(size_t i) const + { + if (i < phis.size()) + return phis[i]; + return at(i - phis.size()); + } + bool isPhiIndex(size_t i) const { return i < phis.size(); } + + bool isInPhis(NodeIndex nodeIndex) const + { + for (size_t i = 0; i < phis.size(); ++i) { + if (phis[i] == nodeIndex) + return true; + } + return false; + } + + bool isInBlock(NodeIndex index) const + { + for (size_t i = 0; i < numNodes(); ++i) { + if (nodeIndex(i) == index) + return true; + } + return false; + } // This value is used internally for block linking and OSR entry. It is mostly meaningless // for other purposes due to inlining. @@ -70,6 +102,7 @@ struct BasicBlock : Vector<NodeIndex, 8> { bool isOSRTarget; bool cfaHasVisited; bool cfaShouldRevisit; + bool cfaFoundConstants; #if !ASSERT_DISABLED bool isLinked; #endif |