Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 4 additions & 10 deletions src/coreclr/jit/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -5310,7 +5310,6 @@ class Compiler
fgWalkPostFn* wtpoVisitorFn;
void* pCallbackData; // user-provided data
GenTree* parent; // parent of current node, provided to callback
GenTreeStack* parentStack; // stack of parent nodes, if asked for
bool wtprLclsOnly; // whether to only visit lclvar nodes
#ifdef DEBUG
bool printModified; // callback can use this
Expand Down Expand Up @@ -10988,14 +10987,14 @@ class GenTreeVisitor
}
};

template <bool computeStack, bool doPreOrder, bool doPostOrder, bool doLclVarsOnly, bool useExecutionOrder>
template <bool doPreOrder, bool doPostOrder, bool doLclVarsOnly, bool useExecutionOrder>
class GenericTreeWalker final
: public GenTreeVisitor<GenericTreeWalker<computeStack, doPreOrder, doPostOrder, doLclVarsOnly, useExecutionOrder>>
: public GenTreeVisitor<GenericTreeWalker<doPreOrder, doPostOrder, doLclVarsOnly, useExecutionOrder>>
{
public:
enum
{
ComputeStack = computeStack,
ComputeStack = false,
DoPreOrder = doPreOrder,
DoPostOrder = doPostOrder,
DoLclVarsOnly = doLclVarsOnly,
Expand All @@ -11007,16 +11006,11 @@ class GenericTreeWalker final

public:
GenericTreeWalker(Compiler::fgWalkData* walkData)
: GenTreeVisitor<GenericTreeWalker<computeStack, doPreOrder, doPostOrder, doLclVarsOnly, useExecutionOrder>>(
: GenTreeVisitor<GenericTreeWalker<doPreOrder, doPostOrder, doLclVarsOnly, useExecutionOrder>>(
walkData->compiler)
, m_walkData(walkData)
{
assert(walkData != nullptr);

if (computeStack)
{
walkData->parentStack = &this->m_ancestors;
}
}

Compiler::fgWalkResult PreOrderVisit(GenTree** use, GenTree* user)
Expand Down
18 changes: 9 additions & 9 deletions src/coreclr/jit/compiler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2546,22 +2546,22 @@ inline Compiler::fgWalkResult Compiler::fgWalkTreePre(
fgWalkResult result;
if (lclVarsOnly && computeStack)
{
GenericTreeWalker<true, true, false, true, true> walker(&walkData);
GenericTreeWalker<true, false, true, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}
else if (lclVarsOnly)
{
GenericTreeWalker<false, true, false, true, true> walker(&walkData);
GenericTreeWalker<true, false, true, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}
else if (computeStack)
{
GenericTreeWalker<true, true, false, false, true> walker(&walkData);
GenericTreeWalker<true, false, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}
else
{
GenericTreeWalker<false, true, false, false, true> walker(&walkData);
GenericTreeWalker<true, false, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}

Expand Down Expand Up @@ -2601,12 +2601,12 @@ inline Compiler::fgWalkResult Compiler::fgWalkTreePost(GenTree** pTree,
fgWalkResult result;
if (computeStack)
{
GenericTreeWalker<true, false, true, false, true> walker(&walkData);
GenericTreeWalker<false, true, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}
else
{
GenericTreeWalker<false, false, true, false, true> walker(&walkData);
GenericTreeWalker<false, true, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}

Expand Down Expand Up @@ -2649,17 +2649,17 @@ inline Compiler::fgWalkResult Compiler::fgWalkTree(GenTree** pTree,

if (preVisitor && postVisitor)
{
GenericTreeWalker<true, true, true, false, true> walker(&walkData);
GenericTreeWalker<true, true, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}
else if (preVisitor)
{
GenericTreeWalker<true, true, false, false, true> walker(&walkData);
GenericTreeWalker<true, false, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}
else
{
GenericTreeWalker<true, false, true, false, true> walker(&walkData);
GenericTreeWalker<false, true, false, true> walker(&walkData);
result = walker.WalkTree(pTree, nullptr);
}

Expand Down