I just checked the R01/R02 methods and they both have 20 IL instructions with 22 bytes of IL code, so this is pretty much a corner case. However the Ch method that you mention has a mere 9 IL instructions and only 9 bytes of IL code, so this does not explain why it doesn't get inlined if the threshold is 20 bytes of IL.
Greetings Andreas Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Alan McGovern Gesendet: Donnerstag, 1. Mai 2008 10:26 An: Rodrigo Kumpera Cc: mono-devel Betreff: Re: [Mono-dev] JIT and Inlining - why doesn't it happen? Hi, That makes sense. I was just quite surprised at the time that the methods were not being inlined as they were only simple maths operations. I checked monodis for one of the methods and it turned out to be 8 IL instructions, which is probably 24 bytes, which would explain why it wasn't inlined. Alan. On Thu, May 1, 2008 at 12:24 AM, Rodrigo Kumpera <[EMAIL PROTECTED]> wrote: Well, the inliner basically eliminates the penalty from using properties and empty constructors. Increasing the inline threshold is tricky and might now be worthy as there are too many situations that abort inlining. So it would significantly increase JIT time for diminishing gains. On Wed, Apr 30, 2008 at 6:38 PM, Alan McGovern <[EMAIL PROTECTED]> wrote: This method does not get inlined: private uint Ch (uint u, uint v, uint w) { return (u&v) ^ (~u&w); } If that isn't inlined then don't ask me what kind of method *could* be inlined by the JIT. Alan. On Wed, Apr 30, 2008 at 11:32 PM, Rodrigo Kumpera <[EMAIL PROTECTED]> wrote: Mono only inline very short methods. Right now methods must have a body at most 20 bytes long. 2008/4/30 Alan McGovern <[EMAIL PROTECTED]>: I recently started doing a bit of optimisation work on the hashing/cryptography classes in mono. When working on the managed SHA256 class[1], i noticed that mono isn't inlining what i'd consider some *very* simple methods. The helper methods which do the bitshifting (Ro0, Ro1, Ch, Maj etc) aren't inlined! Each of these methods is only called once in the code. By manually inlining those method calls, performance increased significantly - about 70%. Why isn't mono inlining these methods? Can mono be made inline these? Alan. [1]http://anonsvn.mono-project.com/viewcvs/trunk/mcs/class/corlib/System.Sec urity.Cryptography/SHA256Managed.cs?rev=46462 <http://anonsvn.mono-project.com/viewcvs/trunk/mcs/class/corlib/System.Secur ity.Cryptography/SHA256Managed.cs?rev=46462&view=markup> &view=markup _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list