summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Forstall <brucefo@microsoft.com>2017-04-18 07:18:10 -0700
committerGitHub <noreply@github.com>2017-04-18 07:18:10 -0700
commit9051ff8ee9cd8876c169c3756b76af8506d8f89b (patch)
tree3dcda6c7256620b9dae8d8c0a1ee53ddc2af8a09 /src
parent432e8bf1efbc696b842b1fe5004fed5319d58818 (diff)
parentf503a568fd54d423510323921bb9065e398471e2 (diff)
downloadcoreclr-9051ff8ee9cd8876c169c3756b76af8506d8f89b.tar.gz
coreclr-9051ff8ee9cd8876c169c3756b76af8506d8f89b.tar.bz2
coreclr-9051ff8ee9cd8876c169c3756b76af8506d8f89b.zip
Merge pull request #11035 from BruceForstall/NumSuccImprovement
Hoist calls to NumSucc() out of loops
Diffstat (limited to 'src')
-rw-r--r--src/jit/importer.cpp15
-rw-r--r--src/jit/lsra.cpp3
2 files changed, 12 insertions, 6 deletions
diff --git a/src/jit/importer.cpp b/src/jit/importer.cpp
index a07c55c62d..e678b15f98 100644
--- a/src/jit/importer.cpp
+++ b/src/jit/importer.cpp
@@ -15507,7 +15507,8 @@ inline void Compiler::impReimportMarkBlock(BasicBlock* block)
void Compiler::impReimportMarkSuccessors(BasicBlock* block)
{
- for (unsigned i = 0; i < block->NumSucc(); i++)
+ const unsigned numSuccs = block->NumSucc();
+ for (unsigned i = 0; i < numSuccs; i++)
{
impReimportMarkBlock(block->GetSucc(i));
}
@@ -15682,7 +15683,8 @@ void Compiler::impImportBlock(BasicBlock* block)
JITDUMP("Marking BBF_INTERNAL block BB%02u as BBF_IMPORTED\n", block->bbNum);
block->bbFlags |= BBF_IMPORTED;
- for (unsigned i = 0; i < block->NumSucc(); i++)
+ const unsigned numSuccs = block->NumSucc();
+ for (unsigned i = 0; i < numSuccs; i++)
{
impImportBlockPending(block->GetSucc(i));
}
@@ -16109,7 +16111,8 @@ SPILLSTACK:
impReimportSpillClique(block);
// For blocks that haven't been imported yet, we still need to mark them as pending import.
- for (unsigned i = 0; i < block->NumSucc(); i++)
+ const unsigned numSuccs = block->NumSucc();
+ for (unsigned i = 0; i < numSuccs; i++)
{
BasicBlock* succ = block->GetSucc(i);
if ((succ->bbFlags & BBF_IMPORTED) == 0)
@@ -16123,7 +16126,8 @@ SPILLSTACK:
// otherwise just import the successors of block
/* Does this block jump to any other blocks? */
- for (unsigned i = 0; i < block->NumSucc(); i++)
+ const unsigned numSuccs = block->NumSucc();
+ for (unsigned i = 0; i < numSuccs; i++)
{
impImportBlockPending(block->GetSucc(i));
}
@@ -16380,7 +16384,8 @@ void Compiler::impWalkSpillCliqueFromPred(BasicBlock* block, SpillCliqueWalker*
BasicBlock* blk = node->m_blk;
FreeBlockListNode(node);
- for (unsigned succNum = 0; succNum < blk->NumSucc(); succNum++)
+ const unsigned numSuccs = blk->NumSucc();
+ for (unsigned succNum = 0; succNum < numSuccs; succNum++)
{
BasicBlock* succ = blk->GetSucc(succNum);
// If it's not already in the clique, add it, and also add it
diff --git a/src/jit/lsra.cpp b/src/jit/lsra.cpp
index e7c1c839d1..557614021d 100644
--- a/src/jit/lsra.cpp
+++ b/src/jit/lsra.cpp
@@ -1378,7 +1378,8 @@ void LinearScan::setBlockSequence()
assert(!"Switch with single successor");
}
- for (unsigned succIndex = 0; succIndex < block->NumSucc(compiler); succIndex++)
+ const unsigned numSuccs = block->NumSucc(compiler);
+ for (unsigned succIndex = 0; succIndex < numSuccs; succIndex++)
{
BasicBlock* succ = block->GetSucc(succIndex, compiler);
if (checkForCriticalOutEdge && succ->GetUniquePred(compiler) == nullptr)