[Mono-dev] mono / llvm inlining situations (or failures thereof)

Rodrigo Kumpera kumpera at gmail.com
Mon Jul 16 18:45:19 UTC 2012


You can use the MONO_VERBOSE_METHOD env var.
It takes a method name but try a method spec to further narrow the massive
JIT spew this produces if you have multiple matches.


On Mon, Jul 16, 2012 at 3:29 PM, Jonathan Shore <jonathan.shore at gmail.com>wrote:

>
> On Jul 16, 2012, at 2:11 PM, Rodrigo Kumpera wrote:
>
>
>
> On Mon, Jul 16, 2012 at 2:45 PM, Jonathan Shore <jonathan.shore at gmail.com>wrote:
>
>> Hi Rodrigo,
>>
>> I have played with the MONO_INLINELIMIT env variable (just discovered in
>> the mono code a couple of days ago).  It solved some of my other inlining
>> issues.   The AggressiveInlining option should be helpful for methods in
>> 4.5 (I'm still on 4.0), though I don't believe the attribute can be used on
>> properties, even though they are effectively methods (or am I wrong here).
>>
>
>
>> You mentioned "we don't inline methods that call other methods" and
>> suggested might be the case in my code.   I am simply indexing the get
>> method in:
>>
>> public override double this[int i]
>> {
>> get { return _data[i]; }
>> set { _data[i]  = value; }
>> }
>>
>> I thought that since this is an override, though on a leaf / sealed
>> class, perhaps mono could not handle this case.   Not sure where indexing
>> on this property would hit the "call another method" case.
>>
>
> This should probably inline fine. Can you provide a small and complete
> sample where this does happen? Your problem sounds really odd.
>
>
> I did not try the MONO_INLINELIMIT with this particular problem.  I
> manually inlined this one prior to posting and later applied the env
> variable for a different inlining issue after posting.   It seems like the
> default limit is perhaps too low (or too low for my application, I am OK
> with using the env variable however).
>
> I'll reverse the change and give the env variable a go with the above.
> Also, let me check the hierarchy of this class and see whether there is any
> static construction.
>
> If there is nothing obvious, will try to arrange a test case over the next
> few days.   Will be a bit tricky to arrange test, possibly, due to the
> class environment.   With luck, can demonstrate with a simple test.
>
> Finally, how do I see the generated llvm x86 code.  Can I do this with
> monodis?   I know I can see the IL   Thus far have been testing by noting
> the runtime.
>
>
>
>
>> If I understand this better, I can investigate / suggest some new feature
>> re: inlining.
>>
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20120716/e18d0895/attachment-0001.html>


More information about the Mono-devel-list mailing list