diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-20 13:01:08 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-20 13:01:08 +0200 |
commit | 49233e234e5c787396cadb2cea33b31ae0cd65c1 (patch) | |
tree | 5410cb9a8fd53168bb60d62c54b654d86f03c38d /Source/JavaScriptCore/dfg/DFGAbstractState.h | |
parent | b211c645d8ab690f713515dfdc84d80b11c27d2c (diff) | |
download | qtwebkit-49233e234e5c787396cadb2cea33b31ae0cd65c1.tar.gz |
Imported WebKit commit 3a8c29f35d00659d2ce7a0ccdfa8304f14e82327 (http://svn.webkit.org/repository/webkit/trunk@120813)
New snapshot with Windows build fixes
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGAbstractState.h')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGAbstractState.h | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGAbstractState.h b/Source/JavaScriptCore/dfg/DFGAbstractState.h index 4b0a248f3..9bb74cd86 100644 --- a/Source/JavaScriptCore/dfg/DFGAbstractState.h +++ b/Source/JavaScriptCore/dfg/DFGAbstractState.h @@ -193,6 +193,9 @@ public: // of Throw. bool execute(unsigned); + // Did the last executed node clobber the world? + bool didClobber() const { return m_didClobber; } + // Is the execution state still valid? This will be false if execute() has // returned false previously. bool isValid() const { return m_isValid; } @@ -223,22 +226,22 @@ private: void speculateInt32Unary(Node& node, bool forceCanExit = false) { AbstractValue& childValue = forNode(node.child1()); - node.setCanExit(forceCanExit || !isInt32Prediction(childValue.m_type)); - childValue.filter(PredictInt32); + node.setCanExit(forceCanExit || !isInt32Speculation(childValue.m_type)); + childValue.filter(SpecInt32); } void speculateNumberUnary(Node& node) { AbstractValue& childValue = forNode(node.child1()); - node.setCanExit(!isNumberPrediction(childValue.m_type)); - childValue.filter(PredictNumber); + node.setCanExit(!isNumberSpeculation(childValue.m_type)); + childValue.filter(SpecNumber); } void speculateBooleanUnary(Node& node) { AbstractValue& childValue = forNode(node.child1()); - node.setCanExit(!isBooleanPrediction(childValue.m_type)); - childValue.filter(PredictBoolean); + node.setCanExit(!isBooleanSpeculation(childValue.m_type)); + childValue.filter(SpecBoolean); } void speculateInt32Binary(Node& node, bool forceCanExit = false) @@ -247,10 +250,10 @@ private: AbstractValue& childValue2 = forNode(node.child2()); node.setCanExit( forceCanExit - || !isInt32Prediction(childValue1.m_type) - || !isInt32Prediction(childValue2.m_type)); - childValue1.filter(PredictInt32); - childValue2.filter(PredictInt32); + || !isInt32Speculation(childValue1.m_type) + || !isInt32Speculation(childValue2.m_type)); + childValue1.filter(SpecInt32); + childValue2.filter(SpecInt32); } void speculateNumberBinary(Node& node) @@ -258,10 +261,10 @@ private: AbstractValue& childValue1 = forNode(node.child1()); AbstractValue& childValue2 = forNode(node.child2()); node.setCanExit( - !isNumberPrediction(childValue1.m_type) - || !isNumberPrediction(childValue2.m_type)); - childValue1.filter(PredictNumber); - childValue2.filter(PredictNumber); + !isNumberSpeculation(childValue1.m_type) + || !isNumberSpeculation(childValue2.m_type)); + childValue1.filter(SpecNumber); + childValue2.filter(SpecNumber); } CodeBlock* m_codeBlock; @@ -274,6 +277,7 @@ private: bool m_foundConstants; bool m_isValid; + bool m_didClobber; BranchDirection m_branchDirection; // This is only set for blocks that end in Branch and that execute to completion (i.e. m_isValid == true). }; |