[Mono-dev] Initialization of array of enum - trying to not use RuntimeInternals.InitializeArray
John Cronin
jncronin at tysos.org
Sun Jul 22 19:11:57 UTC 2012
There is a known bug in the Microsoft CLR on the x86_64 platform with
regards to initializing an array whose members are enum values
(http://connect.microsoft.com/VisualStudio/feedback/details/635365/runtimehelpers-initializearray-fails-on-64b-framework).
It appears that the Microsoft csc compiler somehow works around this
whereas gmcs does not. For example, the following compiled with gmcs
does not run on the Microsoft CLR on x86_64 (it throws an exception in
InitializeArray) but does when compiled with csc:
class Program
{
enum e { A, B, C, D, E };
static void Main()
{
e[] array = new e[] { e.A, e.B, e.C, e.D, e.E };
}
}
I appreciate this is apparently a bug with the Microsoft 64 bit CLR
rather than mono, but at the moment Microsoft's csc appears to work
around this where mono does not. Is there a way of telling gmcs to not
use a call to InitializeArray when instantiating arrays of enums
(instead doing something like: e[] array = new e[5]; e[0] = e.A; e[1] =
e.B; ... for the above example), or if not would there be any support
for adding this (e.g. via an optional command line flag to gmcs)?
Regards,
John.
More information about the Mono-devel-list
mailing list