On 1 Oct 2013, at 15:35, Robert Jordan <[email protected]> wrote: > On 01.10.2013 15:16, [email protected] wrote: >> >> On 1 Oct 2013, at 14:01, Robert Jordan <[email protected]> wrote: >> >>> mono_field_get_value_object is not mono_field_STATIC_get! >>> You are looking at the wrong function. >>> >> >> Sorry. I was trying to imply that, as in mono_field_get_value_object, that >> mono_field_static_get_value should do its own vtable setup. >> This looks like a bug. > > I don't think this is a bug. mono_field_static_get/set and > mono_field_get/set behave pretty much the same: Both require > that the ctor was already invoked. The former requires > mono_runtime_class_init () whereas the latter needs > mono_runtime_object_init () or an explicit non-default ctor > invocation. > > mono_field_get_value_object () is somewhat different because it > deals with both static and instance fields. It's more elaborated > (and slower), and serves different purposes (maybe it's used by > System.Reflection, I did't check).
I understand now that there is a corollary between mono_runtime_object_init and mono_runtime_class_init. I noted that calling a static method does trigger the static constructor. So the requirement might be that mono_runtime_class_init has to be called prior to static field access if a static method has not previously been called. That sounds rather fragile. So your solution of always calling mono_runtime_class_init prior to static field access is perhaps the most practical solution. Jonathan _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
