Commit 64f0be91 by Olli Etuaho

Remove unused right-to-left AST traversal support

No code actually uses the right-to-left traversal. All it does is add unnecessary complexity. TEST=angle_unittests, angle_end2end_tests BUG=angleproject:1037 Change-Id: Id15498343538c02c252ef0852f9a00c85ac3c4bb Reviewed-on: https://chromium-review.googlesource.com/275183Tested-by: 's avatarOlli Etuaho <oetuaho@nvidia.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
parent cc54e5d9
...@@ -588,12 +588,10 @@ class TIntermTraverser : angle::NonCopyable ...@@ -588,12 +588,10 @@ class TIntermTraverser : angle::NonCopyable
public: public:
POOL_ALLOCATOR_NEW_DELETE(); POOL_ALLOCATOR_NEW_DELETE();
// TODO(zmo): remove default values. // TODO(zmo): remove default values.
TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false, TIntermTraverser(bool preVisit = true, bool inVisit = false, bool postVisit = false)
bool rightToLeft = false)
: preVisit(preVisit), : preVisit(preVisit),
inVisit(inVisit), inVisit(inVisit),
postVisit(postVisit), postVisit(postVisit),
rightToLeft(rightToLeft),
mDepth(0), mDepth(0),
mMaxDepth(0), mMaxDepth(0),
mTemporaryIndex(nullptr) mTemporaryIndex(nullptr)
...@@ -649,7 +647,6 @@ class TIntermTraverser : angle::NonCopyable ...@@ -649,7 +647,6 @@ class TIntermTraverser : angle::NonCopyable
const bool preVisit; const bool preVisit;
const bool inVisit; const bool inVisit;
const bool postVisit; const bool postVisit;
const bool rightToLeft;
// If traversers need to replace nodes, they can add the replacements in // If traversers need to replace nodes, they can add the replacements in
// mReplacements/mMultiReplacements during traversal and the user of the traverser should call // mReplacements/mMultiReplacements during traversal and the user of the traverser should call
...@@ -766,7 +763,7 @@ class TMaxDepthTraverser : public TIntermTraverser ...@@ -766,7 +763,7 @@ class TMaxDepthTraverser : public TIntermTraverser
public: public:
POOL_ALLOCATOR_NEW_DELETE(); POOL_ALLOCATOR_NEW_DELETE();
TMaxDepthTraverser(int depthLimit) TMaxDepthTraverser(int depthLimit)
: TIntermTraverser(true, true, false, false), : TIntermTraverser(true, true, false),
mDepthLimit(depthLimit) { } mDepthLimit(depthLimit) { }
virtual bool visitBinary(Visit, TIntermBinary *) { return depthCheck(); } virtual bool visitBinary(Visit, TIntermBinary *) { return depthCheck(); }
......
...@@ -9,18 +9,12 @@ ...@@ -9,18 +9,12 @@
void TIntermTraverser::pushParentBlock(TIntermAggregate *node) void TIntermTraverser::pushParentBlock(TIntermAggregate *node)
{ {
if (rightToLeft) mParentBlockStack.push_back(ParentBlock(node, 0));
mParentBlockStack.push_back(ParentBlock(node, node->getSequence()->size() - 1));
else
mParentBlockStack.push_back(ParentBlock(node, 0));
} }
void TIntermTraverser::incrementParentBlockPos() void TIntermTraverser::incrementParentBlockPos()
{ {
if (rightToLeft) ++mParentBlockStack.back().pos;
--mParentBlockStack.back().pos;
else
++mParentBlockStack.back().pos;
} }
void TIntermTraverser::popParentBlock() void TIntermTraverser::popParentBlock()
...@@ -102,9 +96,6 @@ void TIntermTraverser::nextTemporaryIndex() ...@@ -102,9 +96,6 @@ void TIntermTraverser::nextTemporaryIndex()
// if preVisit is turned on and the type specific function // if preVisit is turned on and the type specific function
// returns false. // returns false.
// //
// preVisit, postVisit, and rightToLeft control what order
// nodes are visited in.
//
// //
// Traversal functions for terminals are straighforward.... // Traversal functions for terminals are straighforward....
...@@ -139,28 +130,14 @@ void TIntermBinary::traverse(TIntermTraverser *it) ...@@ -139,28 +130,14 @@ void TIntermBinary::traverse(TIntermTraverser *it)
{ {
it->incrementDepth(this); it->incrementDepth(this);
if (it->rightToLeft) if (mLeft)
{ mLeft->traverse(it);
if (mRight)
mRight->traverse(it);
if (it->inVisit) if (it->inVisit)
visit = it->visitBinary(InVisit, this); visit = it->visitBinary(InVisit, this);
if (visit && mLeft) if (visit && mRight)
mLeft->traverse(it); mRight->traverse(it);
}
else
{
if (mLeft)
mLeft->traverse(it);
if (it->inVisit)
visit = it->visitBinary(InVisit, this);
if (visit && mRight)
mRight->traverse(it);
}
it->decrementDepth(); it->decrementDepth();
} }
...@@ -210,40 +187,19 @@ void TIntermAggregate::traverse(TIntermTraverser *it) ...@@ -210,40 +187,19 @@ void TIntermAggregate::traverse(TIntermTraverser *it)
it->incrementDepth(this); it->incrementDepth(this);
if (it->rightToLeft) for (TIntermSequence::iterator sit = mSequence.begin();
sit != mSequence.end(); sit++)
{ {
for (TIntermSequence::reverse_iterator sit = mSequence.rbegin(); (*sit)->traverse(it);
sit != mSequence.rend(); sit++)
if (visit && it->inVisit)
{ {
(*sit)->traverse(it); if (*sit != mSequence.back())
visit = it->visitAggregate(InVisit, this);
if (visit && it->inVisit)
{
if (*sit != mSequence.front())
visit = it->visitAggregate(InVisit, this);
}
if (mOp == EOpSequence)
{
it->incrementParentBlockPos();
}
} }
} if (mOp == EOpSequence)
else
{
for (TIntermSequence::iterator sit = mSequence.begin();
sit != mSequence.end(); sit++)
{ {
(*sit)->traverse(it); it->incrementParentBlockPos();
if (visit && it->inVisit)
{
if (*sit != mSequence.back())
visit = it->visitAggregate(InVisit, this);
}
if (mOp == EOpSequence)
{
it->incrementParentBlockPos();
}
} }
} }
...@@ -270,22 +226,11 @@ void TIntermSelection::traverse(TIntermTraverser *it) ...@@ -270,22 +226,11 @@ void TIntermSelection::traverse(TIntermTraverser *it)
if (visit) if (visit)
{ {
it->incrementDepth(this); it->incrementDepth(this);
if (it->rightToLeft) mCondition->traverse(it);
{ if (mTrueBlock)
if (mFalseBlock) mTrueBlock->traverse(it);
mFalseBlock->traverse(it); if (mFalseBlock)
if (mTrueBlock) mFalseBlock->traverse(it);
mTrueBlock->traverse(it);
mCondition->traverse(it);
}
else
{
mCondition->traverse(it);
if (mTrueBlock)
mTrueBlock->traverse(it);
if (mFalseBlock)
mFalseBlock->traverse(it);
}
it->decrementDepth(); it->decrementDepth();
} }
...@@ -306,23 +251,11 @@ void TIntermSwitch::traverse(TIntermTraverser *it) ...@@ -306,23 +251,11 @@ void TIntermSwitch::traverse(TIntermTraverser *it)
if (visit) if (visit)
{ {
it->incrementDepth(this); it->incrementDepth(this);
if (it->rightToLeft) mInit->traverse(it);
{ if (it->inVisit)
if (mStatementList) visit = it->visitSwitch(InVisit, this);
mStatementList->traverse(it); if (visit && mStatementList)
if (it->inVisit) mStatementList->traverse(it);
visit = it->visitSwitch(InVisit, this);
if (visit)
mInit->traverse(it);
}
else
{
mInit->traverse(it);
if (it->inVisit)
visit = it->visitSwitch(InVisit, this);
if (visit && mStatementList)
mStatementList->traverse(it);
}
it->decrementDepth(); it->decrementDepth();
} }
...@@ -361,34 +294,17 @@ void TIntermLoop::traverse(TIntermTraverser *it) ...@@ -361,34 +294,17 @@ void TIntermLoop::traverse(TIntermTraverser *it)
{ {
it->incrementDepth(this); it->incrementDepth(this);
if (it->rightToLeft) if (mInit)
{ mInit->traverse(it);
if (mExpr)
mExpr->traverse(it);
if (mBody)
mBody->traverse(it);
if (mCond)
mCond->traverse(it);
if (mInit)
mInit->traverse(it);
}
else
{
if (mInit)
mInit->traverse(it);
if (mCond) if (mCond)
mCond->traverse(it); mCond->traverse(it);
if (mBody) if (mBody)
mBody->traverse(it); mBody->traverse(it);
if (mExpr) if (mExpr)
mExpr->traverse(it); mExpr->traverse(it);
}
it->decrementDepth(); it->decrementDepth();
} }
......
...@@ -40,7 +40,7 @@ TIntermUnary *MakeNewUnary(TOperator op, TIntermTyped *operand) ...@@ -40,7 +40,7 @@ TIntermUnary *MakeNewUnary(TOperator op, TIntermTyped *operand)
} }
ElseBlockRewriter::ElseBlockRewriter() ElseBlockRewriter::ElseBlockRewriter()
: TIntermTraverser(true, false, true, false), : TIntermTraverser(true, false, true),
mTemporaryIndex(0), mTemporaryIndex(0),
mFunctionType(NULL) mFunctionType(NULL)
{} {}
......
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