<div>It would be for platforms supporting only AOT.</div><div><div>Of course we would license Mono. We already had a quick discussion about licensing maybe a year ago (it's still R&D/proof of concept for now, and it was only Windows until now so we just delayed actual deal until necessary), but thanks for pointing out, maybe now is a good time to start the discussion again with Xamarin, I will send an email right away.<br>

<br><div class="gmail_quote">On Fri, Jul 6, 2012 at 10:31 PM, Rodrigo Kumpera <span dir="ltr"><<a href="mailto:kumpera@gmail.com" target="_blank">kumpera@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

You need to correctly drive the FullAOT compiler.<div>Why do you want to use FullAOT anyway?</div><div>Do you plan to run it on a target that disables JIT?</div><div>Do you hold a license that allows you to do so? Mono is LGPL and FullAOT doesn't work with it.<br>


<div><br><div class="gmail_quote"><div><div class="h5">On Fri, Jul 6, 2012 at 9:29 AM, Virgile Bello <span dir="ltr"><<a href="mailto:virgile.bello@gmail.com" target="_blank">virgile.bello@gmail.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<div>During full AOT, It seems that if generics is a ref type, AOT is skipped (which makes sense because most of the time it is not necessary, one codegen for any ref type is usually enough).</div><div>However, if the class internally uses a struct based on the generic types, it will fail at runtime.</div>




<div>Here is a simple example showcasing the issue:</div><div><br></div><div><div>public class B</div><div>{</div><div>    public void Test<T>()</div><div>    {</div><div>        System.Console.WriteLine(typeof(T));</div>




<div>    }</div><div>}</div><div><br></div><div>public class A<T></div><div>{</div><div>    public void Test()</div><div>    {</div><div>        new B().Test<System.Collections.Generic.KeyValuePair<T, T>>();</div>




<div>    }</div><div>}</div><div><br></div><div><br></div><div>class P</div><div>{</div><div>    static void Main(string[] args)</div><div>    {</div><div>        new A<int>().Test();</div><div>        new A<string>().Test();</div>




<div>    }</div><div>}</div></div><div><br></div><div>If I run this program with full aot, it will fail.</div><div>new A<int> will work (AOT forced because value type)</div><div>However, new A<string> will generate a JIT exception (because even though string is a ref type, A should be AOT for this specific type because KeyValuePair inside A<T> needs to be JITed.)</div>




<div><br></div><div>But maybe I misunderstood the problem (or it is just a specific bug), because this other case actually work (I was expecting it to have the same issue):</div><div><br></div><div><div>public class B</div>




<div>{</div><div>    public void Test<T>()</div><div>    {</div><div>        System.Console.WriteLine(typeof(System.Collections.Generic.KeyValuePair<T, T>));</div><div>    }</div><div>}</div><div><br></div><div>




public class A<T></div><div>{</div><div>    public void Test()</div><div>    {</div><div>        new B().Test<T>();</div><div>    }</div><div>}</div><div><br></div><div><br></div><div>class P</div><div>{</div>




<div>    static void Main(string[] args)</div><div>    {</div><div>        new A<int>().Test();</div><div>        new A<string>().Test();</div><div>    }</div><div>}</div></div><div><br></div><div>Just wanted to check if I understood the issue right and if there would be nothing preventing from fixing it?</div>




<div>I wouldn't mind taking a look at the sources by myself if necessary.</div><span><font color="#888888"><div><br></div><div>Virgile</div><div><br></div>
</font></span><br></div></div><div class="im">_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com" target="_blank">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></div></blockquote></div><br></div></div>
</blockquote></div><br></div></div>