diff options
author | Pat Gavlin <pgavlin@gmail.com> | 2016-09-08 10:52:21 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-08 10:52:21 -0700 |
commit | 65c2ff78e0e88f5052751747f6686084caab3d4c (patch) | |
tree | 9cfe49a34d2c4bfc03e50ebd663d32cdae6fdaa0 | |
parent | 70fe825e7245a97c32d9af4212d668e6c1f1e3c5 (diff) | |
parent | db2281ccbcc610ca255d174a3d3e5cf287776089 (diff) | |
download | coreclr-65c2ff78e0e88f5052751747f6686084caab3d4c.tar.gz coreclr-65c2ff78e0e88f5052751747f6686084caab3d4c.tar.bz2 coreclr-65c2ff78e0e88f5052751747f6686084caab3d4c.zip |
Merge pull request #7106 from pgavlin/DecompTP
Improve decomp throughput.
-rw-r--r-- | src/jit/decomposelongs.cpp | 23 | ||||
-rw-r--r-- | src/jit/decomposelongs.h | 2 |
2 files changed, 9 insertions, 16 deletions
diff --git a/src/jit/decomposelongs.cpp b/src/jit/decomposelongs.cpp index 25eb5d117a..bf0c424a1d 100644 --- a/src/jit/decomposelongs.cpp +++ b/src/jit/decomposelongs.cpp @@ -111,13 +111,7 @@ void DecomposeLongs::DecomposeRangeHelper() GenTree* node = Range().FirstNonPhiNode(); while (node != nullptr) { - LIR::Use use; - if (!Range().TryGetUse(node, &use)) - { - use = LIR::Use::GetDummyUse(Range(), node); - } - - node = DecomposeNode(use); + node = DecomposeNode(node); } assert(Range().CheckLIR(m_compiler)); @@ -132,10 +126,8 @@ void DecomposeLongs::DecomposeRangeHelper() // Return Value: // The next node to process. // -GenTree* DecomposeLongs::DecomposeNode(LIR::Use& use) +GenTree* DecomposeLongs::DecomposeNode(GenTree* tree) { - GenTree* tree = use.Def(); - // Handle the case where we are implicitly using the lower half of a long lclVar. if ((tree->TypeGet() == TYP_INT) && tree->OperIsLocal()) { @@ -171,14 +163,15 @@ GenTree* DecomposeLongs::DecomposeNode(LIR::Use& use) } #endif // DEBUG + LIR::Use use; + if (!Range().TryGetUse(tree, &use)) + { + use = LIR::Use::GetDummyUse(Range(), tree); + } + GenTree* nextNode = nullptr; switch (tree->OperGet()) { - case GT_PHI: - case GT_PHI_ARG: - nextNode = tree->gtNext; - break; - case GT_LCL_VAR: nextNode = DecomposeLclVar(use); break; diff --git a/src/jit/decomposelongs.h b/src/jit/decomposelongs.h index 72a7ac44c9..2908d7c27e 100644 --- a/src/jit/decomposelongs.h +++ b/src/jit/decomposelongs.h @@ -36,7 +36,7 @@ private: // Driver functions void DecomposeRangeHelper(); - GenTree* DecomposeNode(LIR::Use& use); + GenTree* DecomposeNode(GenTree* tree); // Per-node type decompose cases GenTree* DecomposeLclVar(LIR::Use& use); |