<br><br><div class="gmail_quote">On Mon, Jul 16, 2012 at 1:59 PM, Leszek Ciesielski <span dir="ltr"><<a href="mailto:skolima@gmail.com" target="_blank">skolima@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Mon, Jul 16, 2012 at 6:20 PM, Rodrigo Kumpera <<a href="mailto:kumpera@gmail.com">kumpera@gmail.com</a>> wrote:<br>
> Hi Jonathan,<br>
><br>
> There are a few factors that affect inlining.<br>
><br>
> We don't inline more than 10 levels deep, but I doubt this is your problem.<br>
> We don't inline synchronized methods, methods that belong to MarshalByRef<br>
> classes or method that do exception handlibg. Not your case, probably.<br>
> We only inline methods smaller than 20bytes of IL. It might be your case.<br>
> You can control this with the MONO_INLINELIMIT env var or use the<br>
> AgressiveInlining compiler hint.<br>
> We don't inline calls to classes that need their class constructor to be<br>
> ran. Might be your case.<br>
> We don't do inlining when generics are involved. Doesn't look to be your<br>
> case;<br>
> And, finally, we don't inline methods that call other methods (including<br>
> constructors).<br>
><br>
> The last restriction does look to be your issue. We do it due to a pair of<br>
> issues, first because it produces broken stacktraces<br>
> and because it breaks calls that check caller assembly. Both can be fixed if<br>
> mono had support for inlining maps.<br>
<br>
</div>If that restriction is a major issue - doesn't the JVM solution work<br>
good enough here? Just leave enough frames on the stack that<br>
inter-assembly calls are interweaved as they should, leaving one frame<br>
per assembly in the extreme case. Or is that a more complicated issue<br>
than Java has with inlining?</blockquote><div><br></div><div>Not sure what the suggestion is here. The JVM does limit inlining in this</div><div>fashion to make it's security sandbox work. We don't do it due to the</div>
<div>two stated restrictions, which are unrelated. And, BTW, inline maps</div><div>is what HotSpot uses to not break backtraces ;)</div><div><br></div><div><br></div><div><br></div></div>