<assembly fullname="System.Private.CoreLib">
<!-- domain.c: mono_defaults.appdomain_class -->
- <type fullname="Mono.MonoDomain" preserve="fields">
+ <type fullname="Mono.MonoDomain">
+ <field name="_mono_app_domain"/>
<!-- appdomain.c: mono_domain_try_type_resolve -->
<method name="DoTypeResolve" />
<!-- appdomain.c: mono_domain_try_type_builder_resolve -->
<method signature="System.Void .ctor()" />
</type>
- <!-- threadpool.c: mono_thread_pool_init (assert) -->
- <type fullname="System.MonoAsyncCall" preserve="fields" >
- <!-- threadpool.c mono_object_new_checked in mono_threadpool_begin_invoke -->
- <method signature="System.Void .ctor()" />
- </type>
<!-- mono-mlist.c (managed list): used in threadpool.c and gc.c -->
<type fullname="System.MonoListItem" preserve="fields" />
<type fullname="System.RuntimeMethodHandle" preserve="fields" />
<!-- domain.c: mono_defaults.runtimetype_class -->
- <type fullname="System.RuntimeType" preserve="fields" />
+ <!-- under mono, this has no runtime visible fields -->
+ <type fullname="System.RuntimeType" preserve="nothing" />
<!-- domain.c: mono_defaults.typehandle_class -->
<type fullname="System.RuntimeTypeHandle" preserve="fields" />
<!-- domain.c: mono_defaults.systemtype_class -->
<type fullname="System.Type">
+ <field name="_impl"/>
<!-- marshal.c (mono_marshal_get_synchronized_wrapper) -->
<method name="GetTypeFromHandle" />
<!-- sre.c (mono_reflection_type_get_underlying_system_type) -->
<method name=".ctor" />
</type>
- <!-- icalls - but (at least parts of them) are used thru interfaces at runtime and cannot be linked out -->
- <type fullname="System.Globalization.DateTimeFormatInfo" preserve="fields" />
- <type fullname="System.Globalization.CompareInfo" preserve="fields" />
- <type fullname="System.Globalization.CultureInfo" preserve="fields" />
- <type fullname="System.Globalization.NumberFormatInfo" preserve="fields" />
- <type fullname="System.Globalization.RegionInfo" preserve="fields" />
- <type fullname="System.Globalization.SortKey" preserve="fields" />
-
<type fullname="System.IO.FileNotFoundException">
<!-- mini.c (mono_jit_compiler_method_inner) mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
<method signature="System.Void .ctor(System.String)" />
</type>
- <!-- appdomain.c: ves_icall_System_AppDomain_GetAssemblies -->
+ <!-- appdomain.c (ves_icall_System_Runtime_Loader_AssemblyLoadContext_InternalGetLoadedAssemblies) -->
<type fullname="System.Reflection.Assembly" preserve="fields"/>
<type fullname="System.Reflection.AssemblyName" preserve="fields" />
<method signature="System.Void .ctor(System.Object)" />
</type>
- <!-- icall.c | object-internal.h: MonoReflectionDllImportAttribute structure -->
- <type fullname="System.Runtime.InteropServices.DllImportAttribute" preserve="fields"/>
<!-- marshal.c: emit_marshal_custom (DISABLE_JIT is not defined for the AOT compiler, only the ARM runtimes) -->
<type fullname="System.Runtime.InteropServices.ICustomMarshaler" />
<type fullname="System.Runtime.InteropServices.MarshalDirectiveException">
<method signature="System.Void .ctor(System.String)" />
</type>
-
- <!-- exception.c (mono_get_exception_serialization) -->
- <type fullname="System.Runtime.Serialization.SerializationException">
- <!-- mono_exception_from_name_msg -->
- <method signature="System.Void .ctor(System.String)" />
- </type>
-
- <!-- domain.c: mono_defaults.executioncontext_class -->
- <type fullname="System.Threading.ExecutionContext">
- <!-- security-manager.c: mono_get_context_capture_method (can likely be removed) -->
- <method name="Capture" />
- </type>
-
- <!-- aot-runtime.c: mono_aot_get_method -->
- <type fullname="System.Threading.Interlocked">
- <method name="CompareExchange" />
- <method name="Exchange" />
- </type>
<!-- domain.c: mono_defaults.monitor_class -->
<!-- monitor.c / method-to-ir.c: Enter and Exit are only string comparison (safe to link) -->
<method name="Exit" />
</type>
- <!-- domain.c: mono_defaults.manualresetevent_class -->
- <type fullname="System.Threading.ManualResetEvent" >
- <!-- runtime access fields and setter from inherited WaitHandle -->
- <method signature="System.Void .ctor(System.Boolean)" />
- </type>
-
<!-- exception.c (mono_get_exception_synchronization_lock) -->
<type fullname="System.Threading.SynchronizationLockException">
<!-- mono_exception_from_name_msg -->
</type>
<!-- domain.c: mono_defaults.thread_class -->
+ <!-- FIXME: -->
<type fullname="System.Threading.Thread" preserve="fields">
<method name="get_CurrentContext" />
</type>
<!-- mono_exception_from_name_msg -->
<method signature="System.Void .ctor(System.String)" />
</type>
-
- <!-- object-internals.h: defines MonoWaitHandle, threadpool.c: gets the handle from the structure -->
- <type fullname="System.Threading.WaitHandle" preserve="fields">
- <!-- object.c: mono_wait_handle_new -->
- <method name="set_Handle" />
- <!-- object.c: mono_wait_handle_get_handle -->
- <field name="safe_wait_handle" />
- </type>
<!-- marshal-ilgen.c (emit_native_icall_wrapper_ilgen) -->
<type fullname="Mono.RuntimeStructs/MonoError" />
}
#endregion
-
-
-#region keep in sync with object-internals.h
- MonoTypeInfo type_info;
-#endregion
TypeCache cache;
{
public Enum.EnumInfo EnumInfo;
public TypeCode TypeCode;
+ // this is the displayed form: special characters
+ // ,+*&*[]\ in the identifier portions of the names
+ // have been escaped with a leading backslash (\)
+ public string full_name;
+ public RuntimeConstructorInfo default_ctor;
}
internal RuntimeConstructorInfo GetDefaultConstructor ()
{
- RuntimeConstructorInfo ctor = null;
-
- if (type_info == null)
- type_info = new MonoTypeInfo ();
- else
- ctor = type_info.default_ctor;
+ var cache = Cache;
+ RuntimeConstructorInfo ctor = cache.default_ctor;
if (ctor == null) {
var ctors = GetConstructors (BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
for (int i = 0; i < ctors.Length; ++i) {
if (ctors [i].GetParametersCount () == 0) {
- type_info.default_ctor = ctor = (RuntimeConstructorInfo) ctors [i];
+ cache.default_ctor = ctor = (RuntimeConstructorInfo) ctors [i];
break;
}
}
return null;
string fullName;
- // This doesn't need locking
- if (type_info == null)
- type_info = new MonoTypeInfo ();
- if ((fullName = type_info.full_name) == null)
- fullName = type_info.full_name = getFullName (true, false);
+ var cache = Cache;
+ if ((fullName = cache.full_name) == null)
+ fullName = cache.full_name = getFullName (true, false);
return fullName;
}
return new StructLayoutAttribute (layoutKind) { Pack = pack, Size = size, CharSet = charSet };
}
}
-
- // Contains information about the type which is expensive to compute
- [StructLayout (LayoutKind.Sequential)]
- internal class MonoTypeInfo {
- // this is the displayed form: special characters
- // ,+*&*[]\ in the identifier portions of the names
- // have been escaped with a leading backslash (\)
- public string full_name;
- public RuntimeConstructorInfo default_ctor;
- }
}