summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndy Ayers <andya@microsoft.com>2016-07-11 11:10:56 -0700
committerGitHub <noreply@github.com>2016-07-11 11:10:56 -0700
commit60ae03fc1ce93e3c4b8b1d73d29efb8c5b67ccef (patch)
treebf4646e1724817fb892382811667d88d21dfabcc /src
parent801c8370f3d54568a4a58422d243a7018aeab97f (diff)
parent7e6a05e91dbb95e92bcb8d2b622b1eb0bf9ca53a (diff)
downloadcoreclr-60ae03fc1ce93e3c4b8b1d73d29efb8c5b67ccef.tar.gz
coreclr-60ae03fc1ce93e3c4b8b1d73d29efb8c5b67ccef.tar.bz2
coreclr-60ae03fc1ce93e3c4b8b1d73d29efb8c5b67ccef.zip
Merge pull request #6204 from AndyAyersMS/ModelPolicyDepthCheck
Inliner: add depth check to ModelPolicy
Diffstat (limited to 'src')
-rw-r--r--src/jit/inlinepolicy.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/jit/inlinepolicy.cpp b/src/jit/inlinepolicy.cpp
index 2d044cc804..d60d9bff05 100644
--- a/src/jit/inlinepolicy.cpp
+++ b/src/jit/inlinepolicy.cpp
@@ -1964,6 +1964,19 @@ void ModelPolicy::NoteInt(InlineObservation obs, int value)
{
// Callee too big, not a candidate
SetNever(InlineObservation::CALLEE_TOO_MUCH_IL);
+ return;
+ }
+
+ // Safeguard against overly deep inlines
+ if (obs == InlineObservation::CALLSITE_DEPTH)
+ {
+ unsigned depthLimit = m_RootCompiler->m_inlineStrategy->GetMaxInlineDepth();
+
+ if (m_Depth > depthLimit)
+ {
+ SetFailure(InlineObservation::CALLSITE_IS_TOO_DEEP);
+ return;
+ }
}
}