[Mono-dev] AOT and generics
Rob Wilkens
robwilkens at gmail.com
Fri Jul 6 13:03:59 UTC 2012
I'm not an expert, but i would file a bug report in addition to this
e-mail, if you haven't already - i think things are less likely to be
forgotten in the bug database.
http://mono-project.com/Bugs (and click the green + next to the
appropriate category)
-Rob
On 07/06/2012 08:29 AM, Virgile Bello wrote:
> 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).
> However, if the class internally uses a struct based on the generic
> types, it will fail at runtime.
> Here is a simple example showcasing the issue:
>
> public class B
> {
> public void Test<T>()
> {
> System.Console.WriteLine(typeof(T));
> }
> }
>
> public class A<T>
> {
> public void Test()
> {
> new B().Test<System.Collections.Generic.KeyValuePair<T, T>>();
> }
> }
>
>
> class P
> {
> static void Main(string[] args)
> {
> new A<int>().Test();
> new A<string>().Test();
> }
> }
>
> If I run this program with full aot, it will fail.
> new A<int> will work (AOT forced because value type)
> 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.)
>
> 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):
>
> public class B
> {
> public void Test<T>()
> {
>
> System.Console.WriteLine(typeof(System.Collections.Generic.KeyValuePair<T,
> T>));
> }
> }
>
> public class A<T>
> {
> public void Test()
> {
> new B().Test<T>();
> }
> }
>
>
> class P
> {
> static void Main(string[] args)
> {
> new A<int>().Test();
> new A<string>().Test();
> }
> }
>
> Just wanted to check if I understood the issue right and if there
> would be nothing preventing from fixing it?
> I wouldn't mind taking a look at the sources by myself if necessary.
>
> Virgile
>
>
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-devel-list/attachments/20120706/92c70930/attachment.html>
More information about the Mono-devel-list
mailing list