diff --git a/src/coreclr/src/jit/importer.cpp b/src/coreclr/src/jit/importer.cpp index 4950dba13189b..b85a65c406950 100644 --- a/src/coreclr/src/jit/importer.cpp +++ b/src/coreclr/src/jit/importer.cpp @@ -15595,23 +15595,6 @@ void Compiler::impImportBlockCode(BasicBlock* block) case CEE_THROW: - if (compIsForInlining()) - { - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - // TODO: Will this be too strict, given that we will inline many basic blocks? - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - - /* Do we have just the exception on the stack ?*/ - - if (verCurrentState.esStackDepth != 1) - { - /* if not, just don't inline the method */ - - compInlineResult->NoteFatal(InlineObservation::CALLEE_THROW_WITH_INVALID_STACK); - return; - } - } - if (tiVerificationNeeded) { tiRetVal = impStackTop().seTypeInfo; @@ -15622,11 +15605,14 @@ void Compiler::impImportBlockCode(BasicBlock* block) } } - block->bbSetRunRarely(); // any block with a throw is rare - /* Pop the exception object and create the 'throw' helper call */ + // Any block with a throw is rarely executed. + block->bbSetRunRarely(); + // Pop the exception object and create the 'throw' helper call op1 = gtNewHelperCallNode(CORINFO_HELP_THROW, TYP_VOID, gtNewCallArgs(impPopStack().val)); + // Fall through to clear out the eval stack. + EVAL_APPEND: if (verCurrentState.esStackDepth > 0) { diff --git a/src/coreclr/src/jit/inline.def b/src/coreclr/src/jit/inline.def index b4f01c513788e..c9c613093bd56 100644 --- a/src/coreclr/src/jit/inline.def +++ b/src/coreclr/src/jit/inline.def @@ -58,7 +58,6 @@ INLINE_OBSERVATION(NOT_PROFITABLE_INLINE, bool, "unprofitable inline", INLINE_OBSERVATION(RANDOM_REJECT, bool, "random reject", FATAL, CALLEE) INLINE_OBSERVATION(STACK_CRAWL_MARK, bool, "uses stack crawl mark", FATAL, CALLEE) INLINE_OBSERVATION(STFLD_NEEDS_HELPER, bool, "stfld needs helper", FATAL, CALLEE) -INLINE_OBSERVATION(THROW_WITH_INVALID_STACK, bool, "throw with invalid stack", FATAL, CALLEE) INLINE_OBSERVATION(TOO_MANY_ARGUMENTS, bool, "too many arguments", FATAL, CALLEE) INLINE_OBSERVATION(TOO_MANY_LOCALS, bool, "too many locals", FATAL, CALLEE) INLINE_OBSERVATION(EXPLICIT_TAIL_PREFIX, bool, "explicit tail prefix in callee",FATAL, CALLEE)