Fix Interop/PInvoke/Miscellaneous/HandleRef tests under GCStress (#21131)
[platform/upstream/coreclr.git] / src / vm / mscorlib.h
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 // This file contains the classes, methods, and field used by the EE from mscorlib
5
6 //
7 // To use this, define one of the following macros & include the file like so:
8 //
9 // #define DEFINE_CLASS(id, nameSpace, stringName)         CLASS__ ## id,
10 // #define DEFINE_METHOD(classId, id, stringName, gSign)
11 // #define DEFINE_FIELD(classId, id, stringName)
12 // #include "mscorlib.h"
13 //
14 // Note: To determine if the namespace you want to use in DEFINE_CLASS is supported or not, 
15 //       examine vm\namespace.h. If it is not present, define it there and then proceed to use it below.
16 //
17
18
19 // 
20 // Note: The SM_* and IM_* are signatures defined in file:metasig.h using IM() and SM() macros.
21 // 
22
23 #ifndef DEFINE_CLASS
24 #define DEFINE_CLASS(id, nameSpace, stringName)
25 #endif
26
27 #ifndef DEFINE_METHOD
28 #define DEFINE_METHOD(classId, id, stringName, gSign)
29 #endif
30
31 #ifndef DEFINE_FIELD
32 #define DEFINE_FIELD(classId, id, stringName)
33 #endif
34
35 #ifndef DEFINE_PROPERTY
36 #define DEFINE_PROPERTY(classId, id, stringName, gSign) DEFINE_METHOD(classId, GET_ ## id, get_ ## stringName, IM_Ret ## gSign)
37 #endif
38
39 #ifndef DEFINE_STATIC_PROPERTY
40 #define DEFINE_STATIC_PROPERTY(classId, id, stringName, gSign) DEFINE_METHOD(classId, GET_ ## id, get_ ## stringName, SM_Ret ## gSign)
41 #endif
42
43 #ifndef DEFINE_SET_PROPERTY
44 #define DEFINE_SET_PROPERTY(classId, id, stringName, gSign) \
45     DEFINE_PROPERTY(classId, id, stringName, gSign) \
46     DEFINE_METHOD(classId, SET_ ## id, set_ ## stringName, IM_## gSign ## _RetVoid)
47 #endif
48
49 //
50 // DEFINE_CLASS_U and DEFINE_FIELD_U are debug-only checks to verify that the managed and unmanaged layouts are in sync
51 //
52 #ifndef DEFINE_CLASS_U
53 #define DEFINE_CLASS_U(nameSpace, stringName, unmanagedType)
54 #endif
55
56 #ifndef DEFINE_FIELD_U
57 #define DEFINE_FIELD_U(stringName, unmanagedContainingType, unmanagedOffset)
58 #endif
59
60 // NOTE: Make this window really wide if you want to read the table...
61
62 DEFINE_CLASS(ACTIVATOR,             System,                 Activator)
63
64 DEFINE_CLASS(ACCESS_VIOLATION_EXCEPTION, System,            AccessViolationException)
65 DEFINE_FIELD(ACCESS_VIOLATION_EXCEPTION, IP,                _ip)
66 DEFINE_FIELD(ACCESS_VIOLATION_EXCEPTION, TARGET,            _target)
67 DEFINE_FIELD(ACCESS_VIOLATION_EXCEPTION, ACCESSTYPE,        _accessType)
68
69 DEFINE_CLASS_U(System,                 AppDomain,      AppDomainBaseObject)
70 DEFINE_FIELD_U(AssemblyLoad,               AppDomainBaseObject, m_pAssemblyEventHandler)
71 DEFINE_FIELD_U(_TypeResolve,               AppDomainBaseObject, m_pTypeEventHandler)
72 DEFINE_FIELD_U(_ResourceResolve,           AppDomainBaseObject, m_pResourceEventHandler)
73 DEFINE_FIELD_U(_AssemblyResolve,           AppDomainBaseObject, m_pAsmResolveEventHandler)
74 DEFINE_FIELD_U(_processExit,               AppDomainBaseObject, m_pProcessExitEventHandler)
75 DEFINE_FIELD_U(_domainUnload,              AppDomainBaseObject, m_pDomainUnloadEventHandler)
76 DEFINE_FIELD_U(_unhandledException,        AppDomainBaseObject, m_pUnhandledExceptionEventHandler)
77 DEFINE_FIELD_U(_firstChanceException,      AppDomainBaseObject, m_pFirstChanceExceptionHandler)
78 DEFINE_FIELD_U(_pDomain,                   AppDomainBaseObject, m_pDomain)
79
80 DEFINE_CLASS(APP_DOMAIN,            System,                 AppDomain)
81 DEFINE_METHOD(APP_DOMAIN,           SETUP,Setup,SM_Str_ArrStr_ArrStr_RetVoid)
82 DEFINE_METHOD(APP_DOMAIN,           ON_ASSEMBLY_LOAD,       OnAssemblyLoadEvent,        IM_Assembly_RetVoid)
83 DEFINE_METHOD(APP_DOMAIN,           ON_RESOURCE_RESOLVE,    OnResourceResolveEvent,     IM_Assembly_Str_RetAssembly)
84 DEFINE_METHOD(APP_DOMAIN,           ON_TYPE_RESOLVE,        OnTypeResolveEvent,         IM_Assembly_Str_RetAssembly)
85 DEFINE_METHOD(APP_DOMAIN,           ON_ASSEMBLY_RESOLVE,    OnAssemblyResolveEvent,     IM_Assembly_Str_RetAssembly)
86 #ifdef FEATURE_COMINTEROP
87 DEFINE_METHOD(APP_DOMAIN,           ON_DESIGNER_NAMESPACE_RESOLVE, OnDesignerNamespaceResolveEvent, IM_Str_RetArrStr)
88 #endif //FEATURE_COMINTEROP
89
90 DEFINE_CLASS(CLEANUP_WORK_LIST_ELEMENT,     StubHelpers,            CleanupWorkListElement)
91
92 #ifdef FEATURE_COMINTEROP
93 // Define earlier in mscorlib.h to avoid BinderClassID to const BYTE truncation warning
94 DEFINE_CLASS(DATETIMENATIVE,   StubHelpers,        DateTimeNative)
95 DEFINE_CLASS(TYPENAMENATIVE,   StubHelpers,        TypeNameNative)
96
97 DEFINE_CLASS_U(StubHelpers,     TypeNameNative,             TypeNameNative)
98 DEFINE_FIELD_U(typeName,        TypeNameNative,             typeName)
99 DEFINE_FIELD_U(typeKind,        TypeNameNative,             typeKind)
100
101 #endif
102
103 DEFINE_CLASS(ARG_ITERATOR,          System,                 ArgIterator)
104 DEFINE_CLASS_U(System,              ArgIterator,            VARARGS)  // Includes a SigPointer.
105 DEFINE_METHOD(ARG_ITERATOR,         CTOR2,                  .ctor,                      IM_RuntimeArgumentHandle_PtrVoid_RetVoid)
106
107 DEFINE_CLASS(ARGUMENT_HANDLE,       System,                 RuntimeArgumentHandle)
108
109 DEFINE_CLASS(ARRAY,                 System,                 Array)
110 DEFINE_PROPERTY(ARRAY,              LENGTH,                 Length,                     Int)
111 DEFINE_METHOD(ARRAY,                GET_DATA_PTR_OFFSET_INTERNAL, GetDataPtrOffsetInternal, IM_RetInt)
112
113 DEFINE_CLASS(ARRAY_WITH_OFFSET,     Interop,                ArrayWithOffset)                 
114 DEFINE_FIELD(ARRAY_WITH_OFFSET,     M_ARRAY,                m_array)
115 DEFINE_FIELD(ARRAY_WITH_OFFSET,     M_OFFSET,               m_offset)
116 DEFINE_FIELD(ARRAY_WITH_OFFSET,     M_COUNT,                m_count)
117
118
119 DEFINE_CLASS(ASSEMBLY_BUILDER,      ReflectionEmit,         AssemblyBuilder)
120 DEFINE_CLASS(INTERNAL_ASSEMBLY_BUILDER,      ReflectionEmit,         InternalAssemblyBuilder)
121
122 DEFINE_CLASS(ASSEMBLY_HASH_ALGORITHM,   Assemblies,         AssemblyHashAlgorithm)
123 DEFINE_CLASS(PORTABLE_EXECUTABLE_KINDS, Reflection,         PortableExecutableKinds)
124 DEFINE_CLASS(IMAGE_FILE_MACHINE,        Reflection,         ImageFileMachine)
125
126 DEFINE_CLASS_U(Reflection,             AssemblyName,           AssemblyNameBaseObject)
127 DEFINE_FIELD_U(_name,                      AssemblyNameBaseObject, _name)
128 DEFINE_FIELD_U(_publicKey,                 AssemblyNameBaseObject, _publicKey)
129 DEFINE_FIELD_U(_publicKeyToken,            AssemblyNameBaseObject, _publicKeyToken)
130 DEFINE_FIELD_U(_cultureInfo,               AssemblyNameBaseObject, _cultureInfo)
131 DEFINE_FIELD_U(_codeBase,                  AssemblyNameBaseObject, _codeBase)
132 DEFINE_FIELD_U(_version,                   AssemblyNameBaseObject, _version)
133 DEFINE_FIELD_U(_hashForControl,            AssemblyNameBaseObject, _hashForControl)
134 DEFINE_FIELD_U(_hashAlgorithm,             AssemblyNameBaseObject, _hashAlgorithm)
135 DEFINE_FIELD_U(_hashAlgorithmForControl, AssemblyNameBaseObject, _hashAlgorithmForControl)
136 DEFINE_FIELD_U(_versionCompatibility,      AssemblyNameBaseObject, _versionCompatibility)
137 DEFINE_FIELD_U(_flags,                     AssemblyNameBaseObject, _flags)
138 DEFINE_CLASS(ASSEMBLY_NAME,         Reflection,             AssemblyName)
139 DEFINE_METHOD(ASSEMBLY_NAME,        INIT,                   Init,                      IM_Str_ArrB_ArrB_Ver_CI_AHA_AVC_Str_ANF_SNKP_RetV)
140 DEFINE_METHOD(ASSEMBLY_NAME,        SET_PROC_ARCH_INDEX,    SetProcArchIndex,          IM_PEK_IFM_RetV)
141
142 DEFINE_CLASS_U(System,                 Version,                    VersionBaseObject)
143 DEFINE_FIELD_U(_Major,                     VersionBaseObject,    m_Major)
144 DEFINE_FIELD_U(_Minor,                     VersionBaseObject,    m_Minor)
145 DEFINE_FIELD_U(_Build,                     VersionBaseObject,    m_Build)
146 DEFINE_FIELD_U(_Revision,                  VersionBaseObject,    m_Revision)
147 DEFINE_CLASS(VERSION,               System,                 Version)
148 DEFINE_METHOD(VERSION,              CTOR_Ix2,               .ctor,                      IM_Int_Int_RetVoid)
149 DEFINE_METHOD(VERSION,              CTOR_Ix3,               .ctor,                      IM_Int_Int_Int_RetVoid)
150 DEFINE_METHOD(VERSION,              CTOR_Ix4,               .ctor,                      IM_Int_Int_Int_Int_RetVoid)
151
152 DEFINE_CLASS(ASSEMBLY_VERSION_COMPATIBILITY, Assemblies,    AssemblyVersionCompatibility)
153
154 DEFINE_CLASS(ASSEMBLY_NAME_FLAGS,   Reflection,             AssemblyNameFlags)
155
156 // ASSEMBLYBASE is System.ReflectionAssembly while ASSEMBLY is System.Reflection.RuntimeAssembly
157 // Maybe we should reverse these two names
158 DEFINE_CLASS(ASSEMBLYBASE,          Reflection,             Assembly)
159
160 DEFINE_CLASS_U(Reflection,             RuntimeAssembly,            AssemblyBaseObject)
161 DEFINE_FIELD_U(_ModuleResolve,             AssemblyBaseObject,     m_pModuleEventHandler)
162 DEFINE_FIELD_U(m_fullname,                 AssemblyBaseObject,     m_fullname)
163 DEFINE_FIELD_U(m_syncRoot,                 AssemblyBaseObject,     m_pSyncRoot)
164 DEFINE_FIELD_U(m_assembly,                 AssemblyBaseObject,     m_pAssembly)
165 DEFINE_CLASS(ASSEMBLY,              Reflection,             RuntimeAssembly)
166 DEFINE_FIELD(ASSEMBLY,              HANDLE,                 m_assembly)
167 DEFINE_METHOD(ASSEMBLY,             GET_NAME,               GetName,                    IM_RetAssemblyName)
168 DEFINE_METHOD(ASSEMBLY,             ON_MODULE_RESOLVE,      OnModuleResolveEvent,       IM_Str_RetModule)
169
170
171 DEFINE_CLASS(ASYNCCALLBACK,         System,                 AsyncCallback)
172 DEFINE_CLASS(ATTRIBUTE,             System,                 Attribute)
173
174
175 DEFINE_CLASS(BINDER,                Reflection,             Binder)
176 DEFINE_METHOD(BINDER,               CHANGE_TYPE,            ChangeType,                 IM_Obj_Type_CultureInfo_RetObj)
177
178 DEFINE_CLASS(BINDING_FLAGS,         Reflection,             BindingFlags)
179
180 DEFINE_CLASS_U(System,                 RuntimeType,            ReflectClassBaseObject)
181 DEFINE_FIELD_U(m_cache,                ReflectClassBaseObject,        m_cache)
182 DEFINE_FIELD_U(m_handle,               ReflectClassBaseObject,        m_typeHandle)
183 DEFINE_FIELD_U(m_keepalive,            ReflectClassBaseObject,        m_keepalive)
184 DEFINE_CLASS(CLASS,                 System,                 RuntimeType)
185 DEFINE_FIELD(CLASS,                 TYPEHANDLE,             m_handle)
186 DEFINE_METHOD(CLASS,                GET_PROPERTIES,         GetProperties,              IM_BindingFlags_RetArrPropertyInfo)
187 DEFINE_METHOD(CLASS,                GET_FIELDS,             GetFields,                  IM_BindingFlags_RetArrFieldInfo)
188 DEFINE_METHOD(CLASS,                GET_METHODS,            GetMethods,                 IM_BindingFlags_RetArrMethodInfo)
189 DEFINE_METHOD(CLASS,                INVOKE_MEMBER,          InvokeMember,               IM_Str_BindingFlags_Binder_Obj_ArrObj_ArrParameterModifier_CultureInfo_ArrStr_RetObj)
190 DEFINE_METHOD(CLASS,                GET_METHOD_BASE,        GetMethodBase,              SM_RuntimeType_RuntimeMethodHandleInternal_RetMethodBase)
191 DEFINE_METHOD(CLASS,                GET_FIELD_INFO,         GetFieldInfo,               SM_RuntimeType_IRuntimeFieldInfo_RetFieldInfo)
192 DEFINE_METHOD(CLASS,                GET_PROPERTY_INFO,      GetPropertyInfo,            SM_RuntimeType_Int_RetPropertyInfo)
193
194 #ifdef FEATURE_COMINTEROP
195 DEFINE_METHOD(CLASS,                FORWARD_CALL_TO_INVOKE, ForwardCallToInvokeMember,  IM_Str_BindingFlags_Obj_ArrObj_ArrBool_ArrInt_ArrType_Type_RetObj)
196 #endif // FEATURE_COMINTEROP
197
198 #ifdef FEATURE_COMINTEROP
199 DEFINE_CLASS(BSTR_WRAPPER,          Interop,                BStrWrapper)
200 DEFINE_CLASS(CURRENCY_WRAPPER,      Interop,                CurrencyWrapper)
201 DEFINE_CLASS(DISPATCH_WRAPPER,      Interop,                DispatchWrapper)
202 DEFINE_CLASS(ERROR_WRAPPER,         Interop,                ErrorWrapper)
203 DEFINE_CLASS(UNKNOWN_WRAPPER,       Interop,                UnknownWrapper)
204 DEFINE_CLASS(VARIANT_WRAPPER,       Interop,                VariantWrapper)
205 #endif // FEATURE_COMINTEROP
206
207 #ifdef FEATURE_COMINTEROP
208 DEFINE_CLASS_U(System,                 __ComObject,            ComObject)
209 DEFINE_FIELD_U(m_ObjectToDataMap,      ComObject,              m_ObjectToDataMap)
210 DEFINE_CLASS(COM_OBJECT,            System,                 __ComObject)
211 DEFINE_METHOD(COM_OBJECT,           RELEASE_ALL_DATA,       ReleaseAllData,             IM_RetVoid)
212 DEFINE_METHOD(COM_OBJECT,           GET_EVENT_PROVIDER,     GetEventProvider,           IM_Class_RetObj)
213
214 DEFINE_CLASS(RUNTIME_CLASS,                  WinRT,         RuntimeClass)
215
216 #endif // FEATURE_COMINTEROP
217
218 DEFINE_CLASS_U(Interop,                CriticalHandle,             CriticalHandle)
219 DEFINE_FIELD_U(handle,                     CriticalHandle,     m_handle)
220 DEFINE_FIELD_U(_isClosed,                  CriticalHandle,     m_isClosed)
221 DEFINE_CLASS(CRITICAL_HANDLE,       Interop,                CriticalHandle)
222 DEFINE_FIELD(CRITICAL_HANDLE,       HANDLE,                 handle)
223 DEFINE_METHOD(CRITICAL_HANDLE,      RELEASE_HANDLE,         ReleaseHandle,              IM_RetBool)
224 DEFINE_METHOD(CRITICAL_HANDLE,      GET_IS_INVALID,         get_IsInvalid,              IM_RetBool)
225 DEFINE_METHOD(CRITICAL_HANDLE,      DISPOSE,                Dispose,                    IM_RetVoid)
226 DEFINE_METHOD(CRITICAL_HANDLE,      DISPOSE_BOOL,           Dispose,                    IM_Bool_RetVoid)
227
228 DEFINE_CLASS(HANDLE_REF,            Interop,                HandleRef)
229 DEFINE_FIELD(HANDLE_REF,            WRAPPER,                _wrapper)
230 DEFINE_FIELD(HANDLE_REF,            HANDLE,                 _handle)
231
232 DEFINE_CLASS(CRITICAL_FINALIZER_OBJECT, ConstrainedExecution, CriticalFinalizerObject)
233 DEFINE_METHOD(CRITICAL_FINALIZER_OBJECT, FINALIZE,          Finalize,                   IM_RetVoid)
234
235 DEFINE_CLASS_U(Reflection,             RuntimeConstructorInfo,  NoClass)
236 DEFINE_FIELD_U(m_handle,                   ReflectMethodObject, m_pMD)
237 DEFINE_CLASS(CONSTRUCTOR,           Reflection,             RuntimeConstructorInfo)
238
239 DEFINE_CLASS_U(System,                 RuntimeMethodInfoStub,     ReflectMethodObject)
240 DEFINE_FIELD_U(m_value,                   ReflectMethodObject, m_pMD)
241 DEFINE_CLASS(STUBMETHODINFO,      System,                 RuntimeMethodInfoStub)
242 DEFINE_FIELD(STUBMETHODINFO,      HANDLE,                 m_value)
243
244 DEFINE_CLASS(CONSTRUCTOR_INFO,      Reflection,             ConstructorInfo)
245
246 DEFINE_CLASS_U(Reflection, CustomAttributeEncodedArgument, CustomAttributeValue)
247 DEFINE_FIELD_U(m_primitiveValue,   CustomAttributeValue,           m_rawValue)
248 DEFINE_FIELD_U(m_arrayValue,       CustomAttributeValue,           m_value)
249 DEFINE_FIELD_U(m_stringValue,      CustomAttributeValue,           m_enumOrTypeName)
250 DEFINE_FIELD_U(m_type,             CustomAttributeValue,           m_type)
251 DEFINE_CLASS(CUSTOM_ATTRIBUTE_ENCODED_ARGUMENT, Reflection, CustomAttributeEncodedArgument)
252
253 DEFINE_CLASS_U(Reflection, CustomAttributeNamedParameter, CustomAttributeNamedArgument)
254 DEFINE_FIELD_U(m_argumentName,     CustomAttributeNamedArgument,   m_argumentName)
255 DEFINE_FIELD_U(m_fieldOrProperty,  CustomAttributeNamedArgument,   m_propertyOrField)
256 DEFINE_FIELD_U(m_padding,          CustomAttributeNamedArgument,   m_padding)
257 DEFINE_FIELD_U(m_type,             CustomAttributeNamedArgument,   m_type)
258 DEFINE_FIELD_U(m_encodedArgument,  CustomAttributeNamedArgument,   m_value)
259
260 DEFINE_CLASS_U(Reflection, CustomAttributeCtorParameter, CustomAttributeArgument)
261 DEFINE_FIELD_U(m_type,             CustomAttributeArgument,        m_type)
262 DEFINE_FIELD_U(m_encodedArgument,  CustomAttributeArgument,        m_value)
263
264 DEFINE_CLASS_U(Reflection, CustomAttributeType, CustomAttributeType)
265 DEFINE_FIELD_U(m_enumName,         CustomAttributeType,            m_enumName)
266 DEFINE_FIELD_U(m_encodedType,      CustomAttributeType,            m_tag)
267 DEFINE_FIELD_U(m_encodedEnumType,  CustomAttributeType,            m_enumType)
268 DEFINE_FIELD_U(m_encodedArrayType, CustomAttributeType,            m_arrayType)
269 DEFINE_FIELD_U(m_padding,          CustomAttributeType,            m_padding)
270
271 DEFINE_CLASS_U(Globalization,          CultureInfo,        CultureInfoBaseObject)
272 DEFINE_FIELD_U(compareInfo,        CultureInfoBaseObject,  compareInfo)
273 DEFINE_FIELD_U(textInfo,           CultureInfoBaseObject,  textInfo)
274 DEFINE_FIELD_U(numInfo,            CultureInfoBaseObject,  numInfo)
275 DEFINE_FIELD_U(dateTimeInfo,       CultureInfoBaseObject,  dateTimeInfo)
276 DEFINE_FIELD_U(calendar,           CultureInfoBaseObject,  calendar)
277 DEFINE_FIELD_U(_consoleFallbackCulture, CultureInfoBaseObject, _consoleFallbackCulture)
278 DEFINE_FIELD_U(_name,             CultureInfoBaseObject,  _name)
279 DEFINE_FIELD_U(_nonSortName,      CultureInfoBaseObject,  _nonSortName)
280 DEFINE_FIELD_U(_sortName,         CultureInfoBaseObject,  _sortName)
281 DEFINE_FIELD_U(_parent,           CultureInfoBaseObject,  _parent)
282 DEFINE_FIELD_U(_isReadOnly,        CultureInfoBaseObject,  _isReadOnly)
283 DEFINE_FIELD_U(_isInherited,      CultureInfoBaseObject,  _isInherited)
284 DEFINE_FIELD_U(_useUserOverride,  CultureInfoBaseObject,  _useUserOverride)
285 DEFINE_CLASS(CULTURE_INFO,          Globalization,          CultureInfo)
286 DEFINE_METHOD(CULTURE_INFO,         STR_CTOR,               .ctor,                      IM_Str_RetVoid)
287 DEFINE_FIELD(CULTURE_INFO,          CURRENT_CULTURE,        s_userDefaultCulture)
288 DEFINE_PROPERTY(CULTURE_INFO,       NAME,                   Name,                       Str)
289 #ifdef FEATURE_USE_LCID
290 DEFINE_METHOD(CULTURE_INFO,         INT_CTOR,               .ctor,                      IM_Int_RetVoid)
291 DEFINE_PROPERTY(CULTURE_INFO,       ID,                     LCID,                       Int)
292 #endif
293 DEFINE_PROPERTY(CULTURE_INFO,       PARENT,                 Parent,                     CultureInfo)
294
295 DEFINE_CLASS(CURRENCY,              System,                 Currency)
296 DEFINE_METHOD(CURRENCY,             DECIMAL_CTOR,           .ctor,                      IM_Dec_RetVoid)
297
298 DEFINE_CLASS(DATE_TIME,             System,                 DateTime)
299 DEFINE_METHOD(DATE_TIME,            LONG_CTOR,              .ctor,                      IM_Long_RetVoid)
300
301 #ifdef FEATURE_COMINTEROP
302 DEFINE_CLASS(DATE_TIME_OFFSET,      System,                 DateTimeOffset)
303 #endif // FEATURE_COMINTEROP
304
305 DEFINE_CLASS(DECIMAL,               System,                 Decimal)      
306 DEFINE_METHOD(DECIMAL,              CURRENCY_CTOR,          .ctor,                      IM_Currency_RetVoid)
307
308 DEFINE_CLASS_U(System,                 Delegate,            NoClass)
309 DEFINE_FIELD_U(_target,                    DelegateObject,   _target)
310 DEFINE_FIELD_U(_methodBase,                DelegateObject,   _methodBase)
311 DEFINE_FIELD_U(_methodPtr,                 DelegateObject,   _methodPtr)
312 DEFINE_FIELD_U(_methodPtrAux,              DelegateObject,   _methodPtrAux)
313 DEFINE_CLASS(DELEGATE,              System,                 Delegate)
314 DEFINE_FIELD(DELEGATE,            TARGET,                 _target)
315 DEFINE_FIELD(DELEGATE,            METHOD_PTR,             _methodPtr)
316 DEFINE_FIELD(DELEGATE,            METHOD_PTR_AUX,         _methodPtrAux)
317 DEFINE_METHOD(DELEGATE,             CONSTRUCT_DELEGATE,     DelegateConstruct,          IM_Obj_IntPtr_RetVoid)
318 DEFINE_METHOD(DELEGATE,             GET_INVOKE_METHOD,      GetInvokeMethod,            IM_RetIntPtr)
319
320 DEFINE_CLASS(DYNAMICMETHOD,         ReflectionEmit,         DynamicMethod)
321
322 DEFINE_CLASS(DYNAMICRESOLVER,       ReflectionEmit,         DynamicResolver)
323 DEFINE_FIELD(DYNAMICRESOLVER,       DYNAMIC_METHOD,         m_method)
324
325 DEFINE_CLASS(EMPTY,                 System,                 Empty)
326
327 DEFINE_CLASS(ENC_HELPER,            Diagnostics,            EditAndContinueHelper)
328 DEFINE_FIELD(ENC_HELPER,            OBJECT_REFERENCE,       _objectReference)
329
330 DEFINE_CLASS(ENCODING,              Text,                   Encoding)
331
332 DEFINE_CLASS(ENUM,                  System,                 Enum)
333
334 DEFINE_CLASS(ENVIRONMENT,           System,                 Environment)
335 DEFINE_METHOD(ENVIRONMENT,       GET_RESOURCE_STRING_LOCAL, GetResourceStringLocal,     SM_Str_RetStr)
336 DEFINE_METHOD(ENVIRONMENT,       SET_COMMAND_LINE_ARGS,     SetCommandLineArgs,         SM_ArrStr_RetVoid)
337
338 DEFINE_CLASS(EVENT,                 Reflection,             RuntimeEventInfo)
339
340 DEFINE_CLASS(EVENT_ARGS,            System,                 EventArgs)
341
342 DEFINE_CLASS(EVENT_HANDLERGENERIC,  System,                 EventHandler`1)
343
344 DEFINE_CLASS(EVENT_INFO,            Reflection,             EventInfo)
345
346 DEFINE_CLASS_U(System,                 Exception,      ExceptionObject)
347 DEFINE_FIELD_U(_className,         ExceptionObject,    _className)
348 DEFINE_FIELD_U(_exceptionMethod,   ExceptionObject,    _exceptionMethod)
349 DEFINE_FIELD_U(_message,           ExceptionObject,    _message)
350 DEFINE_FIELD_U(_data,              ExceptionObject,    _data)
351 DEFINE_FIELD_U(_innerException,    ExceptionObject,    _innerException)
352 DEFINE_FIELD_U(_helpURL,           ExceptionObject,    _helpURL)
353 DEFINE_FIELD_U(_source,            ExceptionObject,    _source)
354 DEFINE_FIELD_U(_stackTrace,        ExceptionObject,    _stackTrace)
355 DEFINE_FIELD_U(_watsonBuckets,     ExceptionObject,    _watsonBuckets)
356 DEFINE_FIELD_U(_stackTraceString,  ExceptionObject,    _stackTraceString)
357 DEFINE_FIELD_U(_remoteStackTraceString, ExceptionObject, _remoteStackTraceString)
358 DEFINE_FIELD_U(_dynamicMethods,    ExceptionObject,    _dynamicMethods)
359 DEFINE_FIELD_U(_xptrs,             ExceptionObject,    _xptrs)
360 DEFINE_FIELD_U(_HResult,           ExceptionObject,    _HResult)
361 DEFINE_FIELD_U(_xcode,             ExceptionObject,    _xcode)
362 DEFINE_FIELD_U(_remoteStackIndex,  ExceptionObject,    _remoteStackIndex)
363 DEFINE_FIELD_U(_ipForWatsonBuckets,ExceptionObject,    _ipForWatsonBuckets)
364 DEFINE_CLASS(EXCEPTION,             System,                 Exception)
365 DEFINE_METHOD(EXCEPTION,            GET_CLASS_NAME,         GetClassName,               IM_RetStr)
366 DEFINE_PROPERTY(EXCEPTION,          MESSAGE,                Message,                    Str)
367 DEFINE_PROPERTY(EXCEPTION,          SOURCE,                 Source,                     Str)
368 DEFINE_PROPERTY(EXCEPTION,          HELP_LINK,              HelpLink,                   Str)
369 DEFINE_METHOD(EXCEPTION,            INTERNAL_TO_STRING,     InternalToString,           IM_RetStr)
370 DEFINE_METHOD(EXCEPTION,            TO_STRING,              ToString,                   IM_Bool_Bool_RetStr)
371 DEFINE_METHOD(EXCEPTION,            INTERNAL_PRESERVE_STACK_TRACE, InternalPreserveStackTrace, IM_RetVoid)
372 #ifdef FEATURE_COMINTEROP
373 DEFINE_METHOD(EXCEPTION,            ADD_EXCEPTION_DATA_FOR_RESTRICTED_ERROR_INFO, AddExceptionDataForRestrictedErrorInfo, IM_Str_Str_Str_Obj_Bool_RetVoid)
374 DEFINE_METHOD(EXCEPTION,            TRY_GET_RESTRICTED_LANGUAGE_ERROR_OBJECT,     TryGetRestrictedLanguageErrorObject, IM_RefObject_RetBool)
375 #endif // FEATURE_COMINTEROP
376
377
378 DEFINE_CLASS(SYSTEM_EXCEPTION,      System,                 SystemException)
379 DEFINE_METHOD(SYSTEM_EXCEPTION,     STR_EX_CTOR,            .ctor,                      IM_Str_Exception_RetVoid)
380
381
382 DEFINE_CLASS(TYPE_INIT_EXCEPTION,   System,                 TypeInitializationException)
383 DEFINE_METHOD(TYPE_INIT_EXCEPTION,  STR_EX_CTOR,            .ctor,                      IM_Str_Exception_RetVoid)
384
385 DEFINE_CLASS(THREAD_START_EXCEPTION,Threading,              ThreadStartException)
386 DEFINE_METHOD(THREAD_START_EXCEPTION,EX_CTOR,               .ctor,                      IM_Exception_RetVoid)
387
388 DEFINE_CLASS(TYPE_HANDLE,           System,                 RuntimeTypeHandle)
389 DEFINE_CLASS(RT_TYPE_HANDLE,        System,                 RuntimeTypeHandle)
390 DEFINE_METHOD(RT_TYPE_HANDLE,       GET_TYPE_HELPER,        GetTypeHelper,              SM_Type_ArrType_IntPtr_int_RetType)
391 DEFINE_METHOD(RT_TYPE_HANDLE,       PVOID_CTOR,             .ctor,                      IM_RuntimeType_RetVoid)
392 DEFINE_METHOD(RT_TYPE_HANDLE,       GETVALUEINTERNAL,       GetValueInternal,           SM_RuntimeTypeHandle_RetIntPtr)
393 DEFINE_FIELD(RT_TYPE_HANDLE,        M_TYPE,                 m_type)
394
395 DEFINE_CLASS_U(Reflection,             RtFieldInfo,         NoClass)
396 DEFINE_FIELD_U(m_fieldHandle,              ReflectFieldObject, m_pFD)
397 DEFINE_CLASS(RT_FIELD_INFO,         Reflection,             RtFieldInfo)
398 DEFINE_FIELD(RT_FIELD_INFO,         HANDLE,                 m_fieldHandle)
399
400 DEFINE_CLASS_U(System,                 RuntimeFieldInfoStub,       ReflectFieldObject)
401 DEFINE_FIELD_U(m_fieldHandle,              ReflectFieldObject, m_pFD)
402 DEFINE_CLASS(STUBFIELDINFO,         System,                 RuntimeFieldInfoStub)
403
404 DEFINE_CLASS(FIELD,                 Reflection,             RuntimeFieldInfo)
405 DEFINE_METHOD(FIELD,                SET_VALUE,              SetValue,                   IM_Obj_Obj_BindingFlags_Binder_CultureInfo_RetVoid)
406 DEFINE_METHOD(FIELD,                GET_VALUE,              GetValue,                   IM_Obj_RetObj)
407
408 DEFINE_CLASS(FIELD_HANDLE,          System,                 RuntimeFieldHandle)
409 DEFINE_FIELD(FIELD_HANDLE,          M_FIELD,                m_ptr)
410
411 DEFINE_CLASS(I_RT_FIELD_INFO,       System,                 IRuntimeFieldInfo)
412
413 DEFINE_CLASS(FIELD_INFO,            Reflection,             FieldInfo)
414
415
416 DEFINE_CLASS(GUID,                  System,                 Guid)
417
418 #ifdef FEATURE_COMINTEROP
419 DEFINE_CLASS(HSTRING_HEADER_MANAGED, WinRT,                 HSTRING_HEADER)
420
421 DEFINE_CLASS(ICUSTOMPROPERTY,                 WinRT,                    ICustomProperty)
422 DEFINE_CLASS(ICUSTOMPROPERTYPROVIDERIMPL,     WinRT,                    ICustomPropertyProviderImpl)
423 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERIMPL,    CREATE_PROPERTY,          CreateProperty,           SM_Obj_Str_RetICustomProperty)
424 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERIMPL,    CREATE_INDEXED_PROPERTY,  CreateIndexedProperty,    SM_Obj_Str_PtrTypeName_RetICustomProperty)
425 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERIMPL,    GET_TYPE,                 GetType,                  SM_Obj_PtrTypeName_RetVoid)
426 DEFINE_CLASS(ICUSTOMPROPERTYPROVIDERPROXY,    WinRT,                    ICustomPropertyProviderProxy`2)
427 DEFINE_METHOD(ICUSTOMPROPERTYPROVIDERPROXY,   CREATE_INSTANCE,          CreateInstance,           SM_Obj_RetObj)
428
429 DEFINE_CLASS(FACTORYFORIREFERENCE,   WinRT,                 IReferenceFactory)
430 DEFINE_METHOD(FACTORYFORIREFERENCE,  CREATE_IREFERENCE,     CreateIReference,           SM_Obj_RetObj)
431 DEFINE_CLASS(CLRIREFERENCEIMPL,      WinRT,                 CLRIReferenceImpl`1)
432 DEFINE_METHOD(CLRIREFERENCEIMPL,     UNBOXHELPER,           UnboxHelper,                SM_Obj_RetObj)
433 DEFINE_CLASS(CLRIREFERENCEARRAYIMPL, WinRT,                 CLRIReferenceArrayImpl`1)
434 DEFINE_METHOD(CLRIREFERENCEARRAYIMPL,UNBOXHELPER,           UnboxHelper,                SM_Obj_RetObj)
435 DEFINE_CLASS(IREFERENCE,             WinRT,                 IReference`1)
436 DEFINE_CLASS(CLRIKEYVALUEPAIRIMPL,   WinRT,                 CLRIKeyValuePairImpl`2)
437 DEFINE_METHOD(CLRIKEYVALUEPAIRIMPL,  BOXHELPER,             BoxHelper,                  SM_Obj_RetObj)
438 DEFINE_METHOD(CLRIKEYVALUEPAIRIMPL,  UNBOXHELPER,           UnboxHelper,                SM_Obj_RetObj)
439
440 DEFINE_CLASS(WINDOWS_FOUNDATION_EVENTHANDLER,   WinRT,                 WindowsFoundationEventHandler`1)
441
442 DEFINE_CLASS(VARIANT,               System,                 Variant)
443 DEFINE_METHOD(VARIANT,              CONVERT_OBJECT_TO_VARIANT,MarshalHelperConvertObjectToVariant,SM_Obj_RefVariant_RetVoid)
444 DEFINE_METHOD(VARIANT,              CAST_VARIANT,           MarshalHelperCastVariant,   SM_Obj_Int_RefVariant_RetVoid)
445 DEFINE_METHOD(VARIANT,              CONVERT_VARIANT_TO_OBJECT,MarshalHelperConvertVariantToObject,SM_RefVariant_RetObject)
446 #endif // FEATURE_COMINTEROP
447
448 DEFINE_CLASS(IASYNCRESULT,          System,                 IAsyncResult)
449
450 DEFINE_CLASS(ICUSTOM_ATTR_PROVIDER, Reflection,             ICustomAttributeProvider)
451 DEFINE_METHOD(ICUSTOM_ATTR_PROVIDER,GET_CUSTOM_ATTRIBUTES,  GetCustomAttributes,        IM_Type_RetArrObj)
452
453 DEFINE_CLASS(ICUSTOM_MARSHALER,     Interop,                ICustomMarshaler)
454 DEFINE_METHOD(ICUSTOM_MARSHALER,    MARSHAL_NATIVE_TO_MANAGED,MarshalNativeToManaged,   IM_IntPtr_RetObj)
455 DEFINE_METHOD(ICUSTOM_MARSHALER,    MARSHAL_MANAGED_TO_NATIVE,MarshalManagedToNative,   IM_Obj_RetIntPtr)
456 DEFINE_METHOD(ICUSTOM_MARSHALER,    CLEANUP_NATIVE_DATA,    CleanUpNativeData,          IM_IntPtr_RetVoid)
457 DEFINE_METHOD(ICUSTOM_MARSHALER,    CLEANUP_MANAGED_DATA,   CleanUpManagedData,         IM_Obj_RetVoid)
458 DEFINE_METHOD(ICUSTOM_MARSHALER,    GET_NATIVE_DATA_SIZE,   GetNativeDataSize,         IM_RetInt)
459
460 #ifdef FEATURE_COMINTEROP
461 DEFINE_CLASS(ICUSTOM_QUERYINTERFACE,      Interop,          ICustomQueryInterface)
462 DEFINE_METHOD(ICUSTOM_QUERYINTERFACE,     GET_INTERFACE,    GetInterface,                IM_RefGuid_OutIntPtr_RetCustomQueryInterfaceResult)
463 DEFINE_CLASS(CUSTOMQUERYINTERFACERESULT,  Interop,          CustomQueryInterfaceResult)
464 #endif //FEATURE_COMINTEROP
465
466
467 DEFINE_CLASS(ISERIALIZABLE,         Serialization,          ISerializable)
468 DEFINE_CLASS(IOBJECTREFERENCE,      Serialization,          IObjectReference)
469 DEFINE_CLASS(IDESERIALIZATIONCB,    Serialization,          IDeserializationCallback)
470 DEFINE_CLASS(STREAMING_CONTEXT,     Serialization,          StreamingContext)
471 DEFINE_CLASS(SERIALIZATION_INFO,    Serialization,          SerializationInfo)
472
473
474
475 DEFINE_CLASS(IENUMERATOR,           Collections,            IEnumerator)
476
477 DEFINE_CLASS(IENUMERABLE,           Collections,            IEnumerable)
478 DEFINE_CLASS(ICOLLECTION,           Collections,            ICollection)
479 DEFINE_CLASS(ILIST,                 Collections,            IList)
480 DEFINE_CLASS(IDISPOSABLE,           System,                 IDisposable)
481
482 DEFINE_CLASS(IEXPANDO,              Expando,                IExpando)
483 DEFINE_METHOD(IEXPANDO,             ADD_FIELD,              AddField,                   IM_Str_RetFieldInfo)
484 DEFINE_METHOD(IEXPANDO,             REMOVE_MEMBER,          RemoveMember,               IM_MemberInfo_RetVoid)
485
486 DEFINE_CLASS(IREFLECT,              Reflection,             IReflect)
487 DEFINE_METHOD(IREFLECT,             GET_PROPERTIES,         GetProperties,              IM_BindingFlags_RetArrPropertyInfo)
488 DEFINE_METHOD(IREFLECT,             GET_FIELDS,             GetFields,                  IM_BindingFlags_RetArrFieldInfo)
489 DEFINE_METHOD(IREFLECT,             GET_METHODS,            GetMethods,                 IM_BindingFlags_RetArrMethodInfo)
490 DEFINE_METHOD(IREFLECT,             INVOKE_MEMBER,          InvokeMember,               IM_Str_BindingFlags_Binder_Obj_ArrObj_ArrParameterModifier_CultureInfo_ArrStr_RetObj)
491
492
493 #ifdef FEATURE_COMINTEROP
494 DEFINE_CLASS(LCID_CONVERSION_TYPE,  Interop,                LCIDConversionAttribute)
495 #endif // FEATURE_COMINTEROP
496
497
498 DEFINE_CLASS(MARSHAL,               Interop,                Marshal)
499 #ifdef FEATURE_COMINTEROP
500 DEFINE_METHOD(MARSHAL,              LOAD_LICENSE_MANAGER,   LoadLicenseManager,         SM_Void_RetIntPtr)
501 DEFINE_METHOD(MARSHAL,              INITIALIZE_WRAPPER_FOR_WINRT, InitializeWrapperForWinRT, SM_Obj_RefIntPtr_RetVoid)
502 DEFINE_METHOD(MARSHAL,              GET_HR_FOR_EXCEPTION,              GetHRForException,             SM_Exception_RetInt)
503 DEFINE_METHOD(MARSHAL,              GET_HR_FOR_EXCEPTION_WINRT,        GetHRForException_WinRT,       SM_Exception_RetInt)
504 #endif // FEATURE_COMINTEROP
505 DEFINE_METHOD(MARSHAL,              GET_FUNCTION_POINTER_FOR_DELEGATE, GetFunctionPointerForDelegate, SM_Delegate_RetIntPtr)
506 DEFINE_METHOD(MARSHAL,              GET_DELEGATE_FOR_FUNCTION_POINTER, GetDelegateForFunctionPointer, SM_IntPtr_Type_RetDelegate)
507 DEFINE_METHOD(MARSHAL,              ALLOC_CO_TASK_MEM,                 AllocCoTaskMem,                SM_Int_RetIntPtr)
508 DEFINE_FIELD(MARSHAL,               SYSTEM_MAX_DBCS_CHAR_SIZE,         SystemMaxDBCSCharSize)
509
510
511 DEFINE_CLASS(MEMBER,                Reflection,             MemberInfo)
512
513
514 DEFINE_CLASS_U(Reflection,             RuntimeMethodInfo,  NoClass)
515 DEFINE_FIELD_U(m_handle,                   ReflectMethodObject, m_pMD)
516 DEFINE_CLASS(METHOD,                Reflection,             RuntimeMethodInfo)
517 DEFINE_METHOD(METHOD,               INVOKE,                 Invoke,                     IM_Obj_BindingFlags_Binder_ArrObj_CultureInfo_RetObj)
518 DEFINE_METHOD(METHOD,               GET_PARAMETERS,         GetParameters,              IM_RetArrParameterInfo)
519
520 DEFINE_CLASS(METHOD_BASE,           Reflection,             MethodBase)
521 DEFINE_METHOD(METHOD_BASE,          GET_METHODDESC,         GetMethodDesc,              IM_RetIntPtr)
522
523 DEFINE_CLASS_U(Reflection,             RuntimeExceptionHandlingClause,    RuntimeExceptionHandlingClause)
524 DEFINE_FIELD_U(_methodBody,            RuntimeExceptionHandlingClause,        _methodBody)
525 DEFINE_FIELD_U(_flags,                 RuntimeExceptionHandlingClause,        _flags)
526 DEFINE_FIELD_U(_tryOffset,             RuntimeExceptionHandlingClause,        _tryOffset)
527 DEFINE_FIELD_U(_tryLength,             RuntimeExceptionHandlingClause,        _tryLength)
528 DEFINE_FIELD_U(_handlerOffset,         RuntimeExceptionHandlingClause,        _handlerOffset)
529 DEFINE_FIELD_U(_handlerLength,         RuntimeExceptionHandlingClause,        _handlerLength)
530 DEFINE_FIELD_U(_catchMetadataToken,    RuntimeExceptionHandlingClause,        _catchToken)
531 DEFINE_FIELD_U(_filterOffset,          RuntimeExceptionHandlingClause,        _filterOffset)
532 DEFINE_CLASS(RUNTIME_EH_CLAUSE,             Reflection,             RuntimeExceptionHandlingClause)
533
534 DEFINE_CLASS_U(Reflection,             RuntimeLocalVariableInfo,        RuntimeLocalVariableInfo)
535 DEFINE_FIELD_U(_type,                  RuntimeLocalVariableInfo,        _type)
536 DEFINE_FIELD_U(_localIndex,            RuntimeLocalVariableInfo,        _localIndex)
537 DEFINE_FIELD_U(_isPinned,              RuntimeLocalVariableInfo,        _isPinned)
538 DEFINE_CLASS(RUNTIME_LOCAL_VARIABLE_INFO,   Reflection,             RuntimeLocalVariableInfo)
539
540 DEFINE_CLASS_U(Reflection,             RuntimeMethodBody,           RuntimeMethodBody)
541 DEFINE_FIELD_U(_IL,                    RuntimeMethodBody,         _IL)
542 DEFINE_FIELD_U(_exceptionHandlingClauses, RuntimeMethodBody,         _exceptionClauses)
543 DEFINE_FIELD_U(_localVariables,           RuntimeMethodBody,         _localVariables)
544 DEFINE_FIELD_U(_methodBase,               RuntimeMethodBody,         _methodBase)
545 DEFINE_FIELD_U(_localSignatureMetadataToken, RuntimeMethodBody,      _localVarSigToken)
546 DEFINE_FIELD_U(_maxStackSize,             RuntimeMethodBody,         _maxStackSize)
547 DEFINE_FIELD_U(_initLocals,               RuntimeMethodBody,         _initLocals)
548 DEFINE_CLASS(RUNTIME_METHOD_BODY,           Reflection,             RuntimeMethodBody)
549
550 DEFINE_CLASS(METHOD_INFO,           Reflection,             MethodInfo)
551
552 DEFINE_CLASS(METHOD_HANDLE_INTERNAL,System,                 RuntimeMethodHandleInternal)
553
554 DEFINE_CLASS(METHOD_HANDLE,         System,                 RuntimeMethodHandle)
555 DEFINE_FIELD(METHOD_HANDLE,         METHOD,                 m_value)
556 DEFINE_METHOD(METHOD_HANDLE,        GETVALUEINTERNAL,       GetValueInternal,           SM_RuntimeMethodHandle_RetIntPtr)
557
558 DEFINE_CLASS(MISSING,               Reflection,             Missing)
559 DEFINE_FIELD(MISSING,               VALUE,                  Value)
560
561 DEFINE_CLASS_U(Reflection,             RuntimeModule,               ReflectModuleBaseObject)
562 DEFINE_FIELD_U(m_runtimeType,               ReflectModuleBaseObject,    m_runtimeType)
563 DEFINE_FIELD_U(m_pRefClass,                 ReflectModuleBaseObject,    m_ReflectClass)
564 DEFINE_FIELD_U(m_pData,                     ReflectModuleBaseObject,    m_pData)
565 DEFINE_FIELD_U(m_pGlobals,                  ReflectModuleBaseObject,    m_pGlobals)
566 DEFINE_FIELD_U(m_pFields,                   ReflectModuleBaseObject,    m_pGlobalsFlds)
567 DEFINE_CLASS(MODULE,                Reflection,             RuntimeModule)
568 DEFINE_FIELD(MODULE,                DATA,                   m_pData)
569
570 DEFINE_CLASS(MODULE_BUILDER,        ReflectionEmit,         InternalModuleBuilder)
571 DEFINE_CLASS(TYPE_BUILDER,          ReflectionEmit,         TypeBuilder)
572 DEFINE_CLASS(ENUM_BUILDER,          ReflectionEmit,         EnumBuilder)
573
574 DEFINE_CLASS_U(System,                 MulticastDelegate,          DelegateObject)
575 DEFINE_FIELD_U(_invocationList,            DelegateObject,   _invocationList)
576 DEFINE_FIELD_U(_invocationCount,           DelegateObject,   _invocationCount)
577 DEFINE_CLASS(MULTICAST_DELEGATE,    System,                 MulticastDelegate)
578 DEFINE_FIELD(MULTICAST_DELEGATE,    INVOCATION_LIST,        _invocationList)
579 DEFINE_FIELD(MULTICAST_DELEGATE,    INVOCATION_COUNT,       _invocationCount)
580 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_CLOSED,            CtorClosed,                 IM_Obj_IntPtr_RetVoid)
581 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_CLOSED_STATIC,     CtorClosedStatic,           IM_Obj_IntPtr_RetVoid)
582 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_RT_CLOSED,         CtorRTClosed,               IM_Obj_IntPtr_RetVoid)
583 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_OPENED,            CtorOpened,                 IM_Obj_IntPtr_IntPtr_RetVoid)
584 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_VIRTUAL_DISPATCH,  CtorVirtualDispatch,        IM_Obj_IntPtr_IntPtr_RetVoid)
585 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_COLLECTIBLE_CLOSED_STATIC,     CtorCollectibleClosedStatic,           IM_Obj_IntPtr_IntPtr_RetVoid)
586 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_COLLECTIBLE_OPENED,            CtorCollectibleOpened,                 IM_Obj_IntPtr_IntPtr_IntPtr_RetVoid)
587 DEFINE_METHOD(MULTICAST_DELEGATE,   CTOR_COLLECTIBLE_VIRTUAL_DISPATCH,  CtorCollectibleVirtualDispatch,        IM_Obj_IntPtr_IntPtr_IntPtr_RetVoid)
588
589 DEFINE_CLASS(NULL,                  System,                 DBNull)
590 DEFINE_FIELD(NULL,                  VALUE,          Value)
591
592 DEFINE_CLASS(NULLABLE,              System,                 Nullable`1)
593
594 DEFINE_CLASS(BYREFERENCE,           System,                 ByReference`1)
595 DEFINE_CLASS(SPAN,                  System,                 Span`1)
596 DEFINE_METHOD(SPAN,                 GET_ITEM,               get_Item, IM_Int_RetRefT)
597 DEFINE_CLASS(READONLY_SPAN,         System,                 ReadOnlySpan`1)
598 DEFINE_METHOD(READONLY_SPAN,        GET_ITEM,               get_Item, IM_Int_RetReadOnlyRefT)
599
600 // Keep this in sync with System.Globalization.NumberFormatInfo
601 DEFINE_CLASS_U(Globalization,       NumberFormatInfo,   NumberFormatInfo)
602 DEFINE_FIELD_U(numberGroupSizes,       NumberFormatInfo,   cNumberGroup)
603 DEFINE_FIELD_U(currencyGroupSizes,     NumberFormatInfo,   cCurrencyGroup)
604 DEFINE_FIELD_U(percentGroupSizes,      NumberFormatInfo,   cPercentGroup)
605 DEFINE_FIELD_U(positiveSign,           NumberFormatInfo,   sPositive)
606 DEFINE_FIELD_U(negativeSign,           NumberFormatInfo,   sNegative)
607 DEFINE_FIELD_U(numberDecimalSeparator, NumberFormatInfo,   sNumberDecimal)
608 DEFINE_FIELD_U(numberGroupSeparator,   NumberFormatInfo,   sNumberGroup)
609 DEFINE_FIELD_U(currencyGroupSeparator, NumberFormatInfo,   sCurrencyGroup)
610 DEFINE_FIELD_U(currencyDecimalSeparator,NumberFormatInfo,   sCurrencyDecimal)
611 DEFINE_FIELD_U(currencySymbol,         NumberFormatInfo,   sCurrency)
612 DEFINE_FIELD_U(nanSymbol,              NumberFormatInfo,   sNaN)
613 DEFINE_FIELD_U(positiveInfinitySymbol, NumberFormatInfo,   sPositiveInfinity)
614 DEFINE_FIELD_U(negativeInfinitySymbol, NumberFormatInfo,   sNegativeInfinity)
615 DEFINE_FIELD_U(percentDecimalSeparator,NumberFormatInfo,   sPercentDecimal)
616 DEFINE_FIELD_U(percentGroupSeparator,  NumberFormatInfo,   sPercentGroup)
617 DEFINE_FIELD_U(percentSymbol,          NumberFormatInfo,   sPercent)
618 DEFINE_FIELD_U(perMilleSymbol,         NumberFormatInfo,   sPerMille)
619 DEFINE_FIELD_U(nativeDigits,           NumberFormatInfo,   sNativeDigits)
620 DEFINE_FIELD_U(numberDecimalDigits,    NumberFormatInfo,   cNumberDecimals)
621 DEFINE_FIELD_U(currencyDecimalDigits, NumberFormatInfo,   cCurrencyDecimals)
622 DEFINE_FIELD_U(currencyPositivePattern,NumberFormatInfo,   cPosCurrencyFormat)
623 DEFINE_FIELD_U(currencyNegativePattern,NumberFormatInfo,   cNegCurrencyFormat)
624 DEFINE_FIELD_U(numberNegativePattern,  NumberFormatInfo,   cNegativeNumberFormat)
625 DEFINE_FIELD_U(percentPositivePattern, NumberFormatInfo,   cPositivePercentFormat)
626 DEFINE_FIELD_U(percentNegativePattern, NumberFormatInfo,   cNegativePercentFormat)
627 DEFINE_FIELD_U(percentDecimalDigits,   NumberFormatInfo,   cPercentDecimals)
628 DEFINE_FIELD_U(digitSubstitution,      NumberFormatInfo,   iDigitSubstitution)
629 DEFINE_FIELD_U(isReadOnly,             NumberFormatInfo,   bIsReadOnly)
630 DEFINE_FIELD_U(m_isInvariant,          NumberFormatInfo,   bIsInvariant)
631
632 // Defined as element type alias
633 // DEFINE_CLASS(OBJECT,                System,                 Object)
634 DEFINE_METHOD(OBJECT,               CTOR,                   .ctor,                      IM_RetVoid)
635 DEFINE_METHOD(OBJECT,               FINALIZE,               Finalize,                   IM_RetVoid)
636 DEFINE_METHOD(OBJECT,               TO_STRING,              ToString,                   IM_RetStr)
637 DEFINE_METHOD(OBJECT,               GET_TYPE,               GetType,                    IM_RetType)
638 DEFINE_METHOD(OBJECT,               GET_HASH_CODE,          GetHashCode,                IM_RetInt)
639 DEFINE_METHOD(OBJECT,               EQUALS,                 Equals,                     IM_Obj_RetBool)
640
641 // DEFINE_CLASS(DOUBLE,                System,                 Double)
642 DEFINE_METHOD(DOUBLE,               GET_HASH_CODE,          GetHashCode, IM_RetInt)
643
644 // DEFINE_CLASS(SINGLE,                System,                 Single)
645 DEFINE_METHOD(SINGLE,               GET_HASH_CODE,          GetHashCode, IM_RetInt)
646
647 DEFINE_CLASS(__CANON,              System,                 __Canon)
648
649
650 #ifdef FEATURE_COMINTEROP
651 DEFINE_CLASS(OLE_AUT_BINDER,        System,                 OleAutBinder)    
652 #endif // FEATURE_COMINTEROP
653
654 DEFINE_CLASS(MONITOR,               Threading,              Monitor)
655 DEFINE_METHOD(MONITOR,              ENTER,                  Enter,                      SM_Obj_RetVoid)
656
657 DEFINE_CLASS_U(Threading,              OverlappedData, OverlappedDataObject)
658 DEFINE_FIELD_U(_asyncResult,            OverlappedDataObject,       m_asyncResult)
659 DEFINE_FIELD_U(_callback,               OverlappedDataObject,       m_callback)
660 DEFINE_FIELD_U(_overlapped,             OverlappedDataObject,       m_overlapped)
661 DEFINE_FIELD_U(_userObject,             OverlappedDataObject,       m_userObject)
662 DEFINE_FIELD_U(_pNativeOverlapped,      OverlappedDataObject,       m_pNativeOverlapped)
663 DEFINE_FIELD_U(_offsetLow,              OverlappedDataObject,       m_offsetLow)
664 DEFINE_FIELD_U(_offsetHigh,             OverlappedDataObject,       m_offsetHigh)
665 DEFINE_FIELD_U(_eventHandle,            OverlappedDataObject,       m_eventHandle)
666 DEFINE_CLASS(OVERLAPPEDDATA,            Threading,              OverlappedData)
667
668 DEFINE_CLASS(NATIVEOVERLAPPED,            Threading,              NativeOverlapped)
669
670
671 DEFINE_CLASS(VOLATILE, Threading, Volatile)
672
673 #define DEFINE_VOLATILE_METHODS(methodType, paramType) \
674     DEFINE_METHOD(VOLATILE, READ_##paramType, Read, methodType##_Ref##paramType##_Ret##paramType) \
675     DEFINE_METHOD(VOLATILE, WRITE_##paramType, Write, methodType##_Ref##paramType##_##paramType)
676
677 DEFINE_VOLATILE_METHODS(SM,Bool)
678 DEFINE_VOLATILE_METHODS(SM,SByt)
679 DEFINE_VOLATILE_METHODS(SM,Byte)
680 DEFINE_VOLATILE_METHODS(SM,Shrt)
681 DEFINE_VOLATILE_METHODS(SM,UShrt)
682 DEFINE_VOLATILE_METHODS(SM,Int)
683 DEFINE_VOLATILE_METHODS(SM,UInt)
684 DEFINE_VOLATILE_METHODS(SM,Long)
685 DEFINE_VOLATILE_METHODS(SM,ULong)
686 DEFINE_VOLATILE_METHODS(SM,IntPtr)
687 DEFINE_VOLATILE_METHODS(SM,UIntPtr)
688 DEFINE_VOLATILE_METHODS(SM,Flt)
689 DEFINE_VOLATILE_METHODS(SM,Dbl)
690 DEFINE_VOLATILE_METHODS(GM,T)
691
692 #undef DEFINE_VOLATILE_METHODS
693
694 DEFINE_CLASS(PARAMETER,             Reflection,             ParameterInfo)
695
696 DEFINE_CLASS(PARAMETER_MODIFIER,    Reflection,             ParameterModifier)
697
698 DEFINE_CLASS(POINTER,               Reflection,             Pointer)
699
700 DEFINE_CLASS_U(Reflection, Pointer, ReflectionPointer)
701 DEFINE_FIELD_U(_ptr,                ReflectionPointer, _ptr)
702 DEFINE_FIELD_U(_ptrType,            ReflectionPointer, _ptrType)
703
704 DEFINE_CLASS(PROPERTY,              Reflection,             RuntimePropertyInfo)
705 DEFINE_METHOD(PROPERTY,             SET_VALUE,              SetValue,                   IM_Obj_Obj_BindingFlags_Binder_ArrObj_CultureInfo_RetVoid)
706 DEFINE_METHOD(PROPERTY,             GET_VALUE,              GetValue,                   IM_Obj_BindingFlags_Binder_ArrObj_CultureInfo_RetObj)
707 DEFINE_METHOD(PROPERTY,             GET_INDEX_PARAMETERS,   GetIndexParameters,         IM_RetArrParameterInfo)
708 DEFINE_METHOD(PROPERTY,             GET_TOKEN,              get_MetadataToken,          IM_RetInt)
709 DEFINE_METHOD(PROPERTY,             GET_MODULE,             GetRuntimeModule,           IM_RetModule)
710 DEFINE_METHOD(PROPERTY,             GET_SETTER,             GetSetMethod,               IM_Bool_RetMethodInfo)
711 DEFINE_METHOD(PROPERTY,             GET_GETTER,             GetGetMethod,               IM_Bool_RetMethodInfo)
712
713 DEFINE_CLASS(PROPERTY_INFO,         Reflection,             PropertyInfo)
714
715
716
717 DEFINE_CLASS(METADATA_IMPORT,       Reflection,             MetadataImport)
718 DEFINE_METHOD(METADATA_IMPORT,      THROW_ERROR,            ThrowError,                 SM_Int_RetVoid)
719
720 DEFINE_CLASS(RESOLVER,              System,                 Resolver)
721 DEFINE_METHOD(RESOLVER,             GET_JIT_CONTEXT,        GetJitContext,              IM_RefInt_RetRuntimeType)
722 DEFINE_METHOD(RESOLVER,             GET_CODE_INFO,          GetCodeInfo,                IM_RefInt_RefInt_RefInt_RetArrByte)
723 DEFINE_METHOD(RESOLVER,             GET_LOCALS_SIGNATURE,   GetLocalsSignature,         IM_RetArrByte)
724 DEFINE_METHOD(RESOLVER,             GET_EH_INFO,            GetEHInfo,                  IM_Int_VoidPtr_RetVoid)
725 DEFINE_METHOD(RESOLVER,             GET_RAW_EH_INFO,        GetRawEHInfo,               IM_RetArrByte)
726 DEFINE_METHOD(RESOLVER,             GET_STRING_LITERAL,     GetStringLiteral,           IM_Int_RetStr)
727 DEFINE_METHOD(RESOLVER,             RESOLVE_TOKEN,          ResolveToken,               IM_Int_RefIntPtr_RefIntPtr_RefIntPtr_RetVoid)
728 DEFINE_METHOD(RESOLVER,             RESOLVE_SIGNATURE,      ResolveSignature,           IM_IntInt_RetArrByte)
729
730 DEFINE_CLASS(RESOURCE_MANAGER,      Resources,              ResourceManager)
731
732 DEFINE_CLASS(RTFIELD,               Reflection,             RtFieldInfo)
733 DEFINE_METHOD(RTFIELD,              GET_FIELDHANDLE,        GetFieldHandle,            IM_RetIntPtr)
734
735 DEFINE_CLASS(RUNTIME_HELPERS,       CompilerServices,       RuntimeHelpers)
736 DEFINE_METHOD(RUNTIME_HELPERS,      PREPARE_CONSTRAINED_REGIONS, PrepareConstrainedRegions, SM_RetVoid)
737 DEFINE_METHOD(RUNTIME_HELPERS,      PREPARE_CONSTRAINED_REGIONS_NOOP, PrepareConstrainedRegionsNoOP, SM_RetVoid)
738 DEFINE_METHOD(RUNTIME_HELPERS,      EXECUTE_BACKOUT_CODE_HELPER, ExecuteBackoutCodeHelper, SM_Obj_Obj_Bool_RetVoid)
739 DEFINE_METHOD(RUNTIME_HELPERS,      IS_REFERENCE_OR_CONTAINS_REFERENCES, IsReferenceOrContainsReferences, NoSig)
740
741 DEFINE_CLASS(JIT_HELPERS,           CompilerServices,       JitHelpers)
742 #ifdef _DEBUG
743 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST,       UnsafeEnumCastInternal, NoSig)
744 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST_LONG,  UnsafeEnumCastLongInternal, NoSig)
745 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_CAST_TO_STACKPTR,UnsafeCastToStackPointerInternal, NoSig)
746 #else // _DEBUG
747 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST,       UnsafeEnumCast, NoSig)
748 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_ENUM_CAST_LONG,  UnsafeEnumCastLong, NoSig)
749 DEFINE_METHOD(JIT_HELPERS,          UNSAFE_CAST_TO_STACKPTR,UnsafeCastToStackPointer, NoSig)
750 #endif // _DEBUG
751 DEFINE_METHOD(JIT_HELPERS,          GET_RAW_SZ_ARRAY_DATA,  GetRawSzArrayData, NoSig)
752
753 DEFINE_CLASS(UNSAFE,                InternalCompilerServices,       Unsafe)
754 DEFINE_METHOD(UNSAFE,               AS_POINTER,             AsPointer, NoSig)
755 DEFINE_METHOD(UNSAFE,               AS_REF_IN,              AsRef, GM_RefT_RetRefT)
756 DEFINE_METHOD(UNSAFE,               AS_REF_POINTER,         AsRef, GM_VoidPtr_RetRefT)
757 DEFINE_METHOD(UNSAFE,               SIZEOF,                 SizeOf, NoSig)
758 DEFINE_METHOD(UNSAFE,               BYREF_AS,               As, GM_RefTFrom_RetRefTTo)
759 DEFINE_METHOD(UNSAFE,               OBJECT_AS,              As, GM_Obj_RetT)
760 DEFINE_METHOD(UNSAFE,               BYREF_ADD,              Add, GM_RefT_Int_RetRefT)
761 DEFINE_METHOD(UNSAFE,               BYREF_INTPTR_ADD,       Add, GM_RefT_IntPtr_RetRefT)
762 DEFINE_METHOD(UNSAFE,               PTR_ADD,                Add, GM_PtrVoid_Int_RetPtrVoid)
763 DEFINE_METHOD(UNSAFE,               BYREF_BYTE_OFFSET,      ByteOffset, NoSig)
764 DEFINE_METHOD(UNSAFE,               BYREF_ADD_BYTE_OFFSET,  AddByteOffset, NoSig)
765 DEFINE_METHOD(UNSAFE,               BYREF_ARE_SAME,         AreSame, NoSig)
766 DEFINE_METHOD(UNSAFE,               BYREF_IS_ADDRESS_GREATER_THAN, IsAddressGreaterThan, NoSig)
767 DEFINE_METHOD(UNSAFE,               BYREF_IS_ADDRESS_LESS_THAN, IsAddressLessThan, NoSig)
768 DEFINE_METHOD(UNSAFE,               BYREF_INIT_BLOCK_UNALIGNED, InitBlockUnaligned, NoSig)
769 DEFINE_METHOD(UNSAFE,               BYREF_READ_UNALIGNED,   ReadUnaligned, GM_RefByte_RetT)
770 DEFINE_METHOD(UNSAFE,               BYREF_WRITE_UNALIGNED,  WriteUnaligned, GM_RefByte_T_RetVoid)
771 DEFINE_METHOD(UNSAFE,               PTR_READ_UNALIGNED,     ReadUnaligned, GM_PtrVoid_RetT)
772 DEFINE_METHOD(UNSAFE,               PTR_WRITE_UNALIGNED,    WriteUnaligned, GM_PtrVoid_T_RetVoid)
773
774 DEFINE_CLASS(INTERLOCKED,           Threading,              Interlocked)
775 DEFINE_METHOD(INTERLOCKED,          COMPARE_EXCHANGE_T,     CompareExchange, GM_RefT_T_T_RetT)
776 DEFINE_METHOD(INTERLOCKED,          COMPARE_EXCHANGE_OBJECT,CompareExchange, SM_RefObject_Object_Object_RetObject)
777
778 DEFINE_CLASS(PINNING_HELPER,        CompilerServices,       PinningHelper)
779 DEFINE_FIELD(PINNING_HELPER,        M_DATA,                 m_data)
780
781 DEFINE_CLASS(ARRAY_PINNING_HELPER,  CompilerServices,                     ArrayPinningHelper)
782 DEFINE_FIELD(ARRAY_PINNING_HELPER,  M_ARRAY_DATA,                         m_arrayData)
783 DEFINE_FIELD(ARRAY_PINNING_HELPER,  M_ARRAY_LENGTH_AND_PADDING,           m_lengthAndPadding)
784
785 DEFINE_CLASS(RUNTIME_WRAPPED_EXCEPTION, CompilerServices,   RuntimeWrappedException)
786 DEFINE_METHOD(RUNTIME_WRAPPED_EXCEPTION, OBJ_CTOR,          .ctor,                      IM_Obj_RetVoid)
787 DEFINE_FIELD(RUNTIME_WRAPPED_EXCEPTION, WRAPPED_EXCEPTION,  _wrappedException)
788
789 DEFINE_CLASS_U(Interop,                SafeHandle,         SafeHandle)
790 DEFINE_FIELD_U(handle,                     SafeHandle,            m_handle)
791 DEFINE_FIELD_U(_state,                     SafeHandle,            m_state)
792 DEFINE_FIELD_U(_ownsHandle,                SafeHandle,            m_ownsHandle)
793 DEFINE_FIELD_U(_fullyInitialized,          SafeHandle,            m_fullyInitialized)
794 DEFINE_CLASS(SAFE_HANDLE,         Interop,                SafeHandle)
795 DEFINE_FIELD(SAFE_HANDLE,           HANDLE,                 handle)
796 DEFINE_METHOD(SAFE_HANDLE,          GET_IS_INVALID,         get_IsInvalid,              IM_RetBool)
797 DEFINE_METHOD(SAFE_HANDLE,          RELEASE_HANDLE,         ReleaseHandle,              IM_RetBool)
798 DEFINE_METHOD(SAFE_HANDLE,          DISPOSE,                Dispose,                    IM_RetVoid)
799 DEFINE_METHOD(SAFE_HANDLE,          DISPOSE_BOOL,           Dispose,                    IM_Bool_RetVoid)
800
801
802 DEFINE_CLASS(SAFE_TYPENAMEPARSER_HANDLE,    System,         SafeTypeNameParserHandle)
803
804 DEFINE_CLASS(SECURITY_EXCEPTION,    Security,               SecurityException)
805
806 DEFINE_CLASS_U(Diagnostics,                StackFrameHelper,   StackFrameHelper)
807 DEFINE_FIELD_U(targetThread,               StackFrameHelper,   targetThread)
808 DEFINE_FIELD_U(rgiOffset,                  StackFrameHelper,   rgiOffset)
809 DEFINE_FIELD_U(rgiILOffset,                StackFrameHelper,   rgiILOffset)
810 DEFINE_FIELD_U(dynamicMethods,             StackFrameHelper,   dynamicMethods)
811 DEFINE_FIELD_U(rgMethodHandle,             StackFrameHelper,   rgMethodHandle)
812 DEFINE_FIELD_U(rgAssemblyPath,             StackFrameHelper,   rgAssemblyPath)
813 DEFINE_FIELD_U(rgLoadedPeAddress,          StackFrameHelper,   rgLoadedPeAddress)
814 DEFINE_FIELD_U(rgiLoadedPeSize,            StackFrameHelper,   rgiLoadedPeSize)
815 DEFINE_FIELD_U(rgInMemoryPdbAddress,       StackFrameHelper,   rgInMemoryPdbAddress)
816 DEFINE_FIELD_U(rgiInMemoryPdbSize,         StackFrameHelper,   rgiInMemoryPdbSize)
817 DEFINE_FIELD_U(rgiMethodToken,             StackFrameHelper,   rgiMethodToken)
818 DEFINE_FIELD_U(rgFilename,                 StackFrameHelper,   rgFilename)
819 DEFINE_FIELD_U(rgiLineNumber,              StackFrameHelper,   rgiLineNumber)
820 DEFINE_FIELD_U(rgiColumnNumber,            StackFrameHelper,   rgiColumnNumber)
821 DEFINE_FIELD_U(rgiLastFrameFromForeignExceptionStackTrace,            StackFrameHelper,   rgiLastFrameFromForeignExceptionStackTrace)
822 DEFINE_FIELD_U(iFrameCount,                StackFrameHelper,   iFrameCount)
823
824 DEFINE_CLASS(STARTUP_HOOK_PROVIDER,  System,                StartupHookProvider)
825 DEFINE_METHOD(STARTUP_HOOK_PROVIDER, PROCESS_STARTUP_HOOKS, ProcessStartupHooks, SM_RetVoid)
826
827 DEFINE_CLASS(STREAM,                IO,                     Stream)
828 DEFINE_METHOD(STREAM,               BEGIN_READ,             BeginRead,  IM_ArrByte_Int_Int_AsyncCallback_Object_RetIAsyncResult)
829 DEFINE_METHOD(STREAM,               END_READ,               EndRead,    IM_IAsyncResult_RetInt)
830 DEFINE_METHOD(STREAM,               BEGIN_WRITE,            BeginWrite, IM_ArrByte_Int_Int_AsyncCallback_Object_RetIAsyncResult)
831 DEFINE_METHOD(STREAM,               END_WRITE,              EndWrite,   IM_IAsyncResult_RetVoid)
832
833 // Defined as element type alias
834 // DEFINE_CLASS(INTPTR,                System,                 IntPtr)
835 DEFINE_FIELD(INTPTR,                ZERO,                   Zero)
836
837 // Defined as element type alias
838 // DEFINE_CLASS(UINTPTR,                System,                UIntPtr)
839 DEFINE_FIELD(UINTPTR,               ZERO,                   Zero)
840
841 DEFINE_CLASS(BITCONVERTER,          System,                 BitConverter)
842 DEFINE_FIELD(BITCONVERTER,          ISLITTLEENDIAN,         IsLittleEndian)
843
844 // Defined as element type alias
845 // DEFINE_CLASS(STRING,                System,                 String)
846 DEFINE_FIELD(STRING,                M_FIRST_CHAR,           _firstChar)
847 DEFINE_FIELD(STRING,                EMPTY,                  Empty)
848 DEFINE_METHOD(STRING,               CTOR_CHARPTR,           .ctor,                      IM_PtrChar_RetVoid)
849 DEFINE_METHOD(STRING,               CTORF_CHARARRAY,        Ctor,                       IM_ArrChar_RetStr)
850 DEFINE_METHOD(STRING,               CTORF_CHARARRAY_START_LEN,Ctor,                     IM_ArrChar_Int_Int_RetStr)
851 DEFINE_METHOD(STRING,               CTORF_CHAR_COUNT,       Ctor,                       IM_Char_Int_RetStr)
852 DEFINE_METHOD(STRING,               CTORF_CHARPTR,          Ctor,                       IM_PtrChar_RetStr)
853 DEFINE_METHOD(STRING,               CTORF_CHARPTR_START_LEN,Ctor,                       IM_PtrChar_Int_Int_RetStr)
854 DEFINE_METHOD(STRING,               CTORF_READONLYSPANOFCHAR,Ctor,                      IM_ReadOnlySpanOfChar_RetStr)
855 DEFINE_METHOD(STRING,               CTORF_SBYTEPTR,         Ctor,                       IM_PtrSByt_RetStr)
856 DEFINE_METHOD(STRING,               CTORF_SBYTEPTR_START_LEN, Ctor,                     IM_PtrSByt_Int_Int_RetStr)
857 DEFINE_METHOD(STRING,               CTORF_SBYTEPTR_START_LEN_ENCODING, Ctor,            IM_PtrSByt_Int_Int_Encoding_RetStr)
858 DEFINE_METHOD(STRING,               INTERNAL_COPY,          InternalCopy,               SM_Str_IntPtr_Int_RetVoid)
859 DEFINE_METHOD(STRING,               WCSLEN,                 wcslen,                     SM_PtrChar_RetInt)
860 DEFINE_PROPERTY(STRING,             LENGTH,                 Length,                     Int)
861
862 DEFINE_CLASS(STRING_BUILDER,        Text,                   StringBuilder)
863 DEFINE_PROPERTY(STRING_BUILDER,     LENGTH,                 Length,                     Int)
864 DEFINE_PROPERTY(STRING_BUILDER,     CAPACITY,               Capacity,                   Int)
865 DEFINE_METHOD(STRING_BUILDER,       CTOR_INT,               .ctor,                      IM_Int_RetVoid)
866 DEFINE_METHOD(STRING_BUILDER,       TO_STRING,              ToString,                   IM_RetStr)
867 DEFINE_METHOD(STRING_BUILDER,       INTERNAL_COPY,          InternalCopy,               IM_IntPtr_Int_RetVoid)
868 DEFINE_METHOD(STRING_BUILDER,       REPLACE_BUFFER_INTERNAL,ReplaceBufferInternal,      IM_PtrChar_Int_RetVoid)
869 DEFINE_METHOD(STRING_BUILDER,       REPLACE_BUFFER_ANSI_INTERNAL,ReplaceBufferAnsiInternal, IM_PtrSByt_Int_RetVoid)
870
871 DEFINE_CLASS(STRONG_NAME_KEY_PAIR,  Reflection,             StrongNameKeyPair)
872
873 DEFINE_CLASS_U(Threading,              SynchronizationContext, SynchronizationContextObject)
874 DEFINE_FIELD_U(_props, SynchronizationContextObject, _props)
875 DEFINE_CLASS(SYNCHRONIZATION_CONTEXT,    Threading,              SynchronizationContext)
876 DEFINE_METHOD(SYNCHRONIZATION_CONTEXT,  INVOKE_WAIT_METHOD_HELPER, InvokeWaitMethodHelper, SM_SyncCtx_ArrIntPtr_Bool_Int_RetInt)
877
878 DEFINE_CLASS(CONTEXTCALLBACK,       Threading,       ContextCallback)
879
880 #ifdef _DEBUG
881 DEFINE_CLASS(STACKCRAWMARK,         Threading,       StackCrawlMark)
882 #endif
883
884 DEFINE_CLASS_U(Threading,              Thread,                     ThreadBaseObject)
885 DEFINE_FIELD_U(m_Name,                     ThreadBaseObject,   m_Name)
886 DEFINE_FIELD_U(m_Delegate,                 ThreadBaseObject,   m_Delegate)
887 DEFINE_FIELD_U(m_ThreadStartArg,           ThreadBaseObject,   m_ThreadStartArg)
888 DEFINE_FIELD_U(DONT_USE_InternalThread,    ThreadBaseObject,   m_InternalThread)
889 DEFINE_FIELD_U(m_Priority,                 ThreadBaseObject,   m_Priority)
890 DEFINE_CLASS(THREAD,                Threading,              Thread)
891 DEFINE_FIELD(THREAD,                CULTURE,                m_CurrentCulture)
892 DEFINE_FIELD(THREAD,                UI_CULTURE,             m_CurrentUICulture)
893 DEFINE_SET_PROPERTY(THREAD,         CULTURE,                CurrentCulture,             CultureInfo)
894 DEFINE_SET_PROPERTY(THREAD,         UI_CULTURE,             CurrentUICulture,           CultureInfo)
895 DEFINE_STATIC_PROPERTY(THREAD,      CURRENT_THREAD,         CurrentThread,              Thread)
896 DEFINE_METHOD(THREAD,               INTERNAL_GET_CURRENT_THREAD,             InternalGetCurrentThread,                    SM_RetIntPtr)
897
898 DEFINE_CLASS(PARAMETERIZEDTHREADSTART,     Threading,                 ParameterizedThreadStart)
899
900 DEFINE_CLASS(IOCB_HELPER,              Threading,            _IOCompletionCallback)
901 DEFINE_METHOD(IOCB_HELPER,             PERFORM_IOCOMPLETION_CALLBACK,        PerformIOCompletionCallback,          SM_UInt_UInt_PtrNativeOverlapped_RetVoid)
902
903 DEFINE_CLASS(TPWAITORTIMER_HELPER,              Threading,            _ThreadPoolWaitOrTimerCallback)
904 DEFINE_METHOD(TPWAITORTIMER_HELPER,             PERFORM_WAITORTIMER_CALLBACK,        PerformWaitOrTimerCallback,          SM_Obj_Bool_RetVoid)
905
906 DEFINE_CLASS(TP_WAIT_CALLBACK,         Threading,              _ThreadPoolWaitCallback)
907 DEFINE_METHOD(TP_WAIT_CALLBACK,        PERFORM_WAIT_CALLBACK,               PerformWaitCallback,                   SM_RetBool)
908
909 DEFINE_CLASS(TIMER_QUEUE,           Threading,                TimerQueue)
910 DEFINE_METHOD(TIMER_QUEUE,          APPDOMAIN_TIMER_CALLBACK, AppDomainTimerCallback,   SM_Int_RetVoid)
911
912 DEFINE_CLASS(TIMESPAN,              System,                 TimeSpan)
913
914
915 DEFINE_CLASS(TYPE,                  System,                 Type)
916 DEFINE_METHOD(TYPE,                 GET_TYPE_FROM_HANDLE,   GetTypeFromHandle,          SM_RuntimeTypeHandle_RetType)
917 DEFINE_PROPERTY(TYPE,               IS_IMPORT,              IsImport,                   Bool)
918
919 DEFINE_CLASS(TYPE_DELEGATOR,        Reflection,             TypeDelegator)
920
921 DEFINE_CLASS(UNHANDLED_EVENTARGS,   System,                 UnhandledExceptionEventArgs)
922 DEFINE_METHOD(UNHANDLED_EVENTARGS,  CTOR,                   .ctor,                      IM_Obj_Bool_RetVoid)
923
924 DEFINE_CLASS(FIRSTCHANCE_EVENTARGS,   ExceptionServices,      FirstChanceExceptionEventArgs)
925 DEFINE_METHOD(FIRSTCHANCE_EVENTARGS,  CTOR,                   .ctor,                      IM_Exception_RetVoid)
926
927 DEFINE_CLASS(ASSEMBLYLOADCONTEXT,  Loader,                AssemblyLoadContext)    
928 DEFINE_METHOD(ASSEMBLYLOADCONTEXT,  RESOLVE,          Resolve,                      SM_IntPtr_AssemblyName_RetAssemblyBase)
929 DEFINE_METHOD(ASSEMBLYLOADCONTEXT,  RESOLVEUNMANAGEDDLL,          ResolveUnmanagedDll,                      SM_Str_IntPtr_RetIntPtr)
930 DEFINE_METHOD(ASSEMBLYLOADCONTEXT,  RESOLVEUSINGEVENT,          ResolveUsingResolvingEvent,                      SM_IntPtr_AssemblyName_RetAssemblyBase)
931
932 DEFINE_CLASS(LAZY,              System,     Lazy`1)
933
934 DEFINE_CLASS(LAZY_INITIALIZER,  Threading,  LazyInitializer)
935
936 DEFINE_CLASS(VALUE_TYPE,            System,                 ValueType)
937 DEFINE_METHOD(VALUE_TYPE,           GET_HASH_CODE,          GetHashCode,            IM_RetInt)
938 DEFINE_METHOD(VALUE_TYPE,           EQUALS,                 Equals,                 IM_Obj_RetBool)
939
940 DEFINE_CLASS(GC,                    System,                 GC)
941 DEFINE_METHOD(GC,                   KEEP_ALIVE,             KeepAlive,                  SM_Obj_RetVoid)
942 DEFINE_METHOD(GC,                   COLLECT,                Collect,                    SM_RetVoid)
943 DEFINE_METHOD(GC,                   WAIT_FOR_PENDING_FINALIZERS, WaitForPendingFinalizers, SM_RetVoid)
944
945 DEFINE_CLASS_U(System,                 WeakReference,          WeakReferenceObject)
946 DEFINE_FIELD_U(m_handle,               WeakReferenceObject,    m_Handle)
947 DEFINE_CLASS(WEAKREFERENCE,         System,                 WeakReference)
948
949 DEFINE_CLASS_U(Threading,              WaitHandle,             WaitHandleBase)
950 DEFINE_FIELD_U(_waitHandle,         WaitHandleBase,         m_safeHandle)
951 DEFINE_FIELD_U(waitHandle,             WaitHandleBase,         m_handle)
952 DEFINE_FIELD_U(hasThreadAffinity,      WaitHandleBase,         m_hasThreadAffinity)
953
954 DEFINE_CLASS(DEBUGGER,              Diagnostics,            Debugger)
955 DEFINE_METHOD(DEBUGGER,             BREAK_CAN_THROW,        BreakCanThrow,          SM_RetVoid)
956
957 DEFINE_CLASS(BUFFER,                System,                 Buffer)
958 DEFINE_METHOD(BUFFER,               MEMCPY_PTRBYTE_ARRBYTE, Memcpy,                 SM_PtrByte_Int_ArrByte_Int_Int_RetVoid)
959 DEFINE_METHOD(BUFFER,               MEMCPY,                 Memcpy,                 SM_PtrByte_PtrByte_Int_RetVoid)
960
961 #ifdef FEATURE_COMINTEROP
962 DEFINE_CLASS(WINDOWSRUNTIMEMARSHAL, WinRT,  WindowsRuntimeMarshal)
963 #ifdef FEATURE_COMINTEROP_WINRT_MANAGED_ACTIVATION
964 DEFINE_METHOD(WINDOWSRUNTIMEMARSHAL, GET_ACTIVATION_FACTORY_FOR_TYPE, GetActivationFactoryForType, SM_Type_RetIntPtr)
965 #endif // FEATURE_COMINTEROP_WINRT_MANAGED_ACTIVATION
966
967 DEFINE_CLASS(IACTIVATIONFACTORY,    WinRT,  IActivationFactory)
968 DEFINE_METHOD(IACTIVATIONFACTORY,   ACTIVATE_INSTANCE, ActivateInstance, IM_RetObj)
969 DEFINE_CLASS(ISTRINGABLEHELPER,     WinRT,  IStringableHelper)
970 DEFINE_METHOD(ISTRINGABLEHELPER,    TO_STRING, ToString, SM_Obj_RetStr)
971 #endif // FEATURE_COMINTEROP
972
973 DEFINE_CLASS(STUBHELPERS,           StubHelpers,            StubHelpers)
974 DEFINE_METHOD(STUBHELPERS,          IS_QCALL,               IsQCall,                    SM_IntPtr_RetBool)
975 DEFINE_METHOD(STUBHELPERS,          INIT_DECLARING_TYPE,    InitDeclaringType,          SM_IntPtr_RetVoid)
976 DEFINE_METHOD(STUBHELPERS,          GET_NDIRECT_TARGET,     GetNDirectTarget,           SM_IntPtr_RetIntPtr)
977 DEFINE_METHOD(STUBHELPERS,          GET_DELEGATE_TARGET,    GetDelegateTarget,          SM_Delegate_RefIntPtr_RetIntPtr)
978 #ifdef FEATURE_COMINTEROP
979 DEFINE_METHOD(STUBHELPERS,          GET_COM_HR_EXCEPTION_OBJECT,              GetCOMHRExceptionObject,            SM_Int_IntPtr_Obj_RetException)
980 DEFINE_METHOD(STUBHELPERS,          GET_COM_HR_EXCEPTION_OBJECT_WINRT,        GetCOMHRExceptionObject_WinRT,      SM_Int_IntPtr_Obj_RetException)
981 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW,                      GetCOMIPFromRCW,                    SM_Obj_IntPtr_RefIntPtr_RefBool_RetIntPtr)
982 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW_WINRT,                GetCOMIPFromRCW_WinRT,              SM_Obj_IntPtr_RefIntPtr_RetIntPtr)
983 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW_WINRT_SHARED_GENERIC, GetCOMIPFromRCW_WinRTSharedGeneric, SM_Obj_IntPtr_RefIntPtr_RetIntPtr)
984 DEFINE_METHOD(STUBHELPERS,          GET_COM_IP_FROM_RCW_WINRT_DELEGATE,       GetCOMIPFromRCW_WinRTDelegate,      SM_Obj_IntPtr_RefIntPtr_RetIntPtr)
985 DEFINE_METHOD(STUBHELPERS,          SHOULD_CALL_WINRT_INTERFACE,              ShouldCallWinRTInterface,           SM_Obj_IntPtr_RetBool)
986 DEFINE_METHOD(STUBHELPERS,          STUB_REGISTER_RCW,                        StubRegisterRCW,                    SM_Obj_RetVoid)
987 DEFINE_METHOD(STUBHELPERS,          STUB_UNREGISTER_RCW,                      StubUnregisterRCW,                  SM_Obj_RetVoid)
988 DEFINE_METHOD(STUBHELPERS,          GET_WINRT_FACTORY_OBJECT,                 GetWinRTFactoryObject,              SM_IntPtr_RetObj)
989 DEFINE_METHOD(STUBHELPERS,          GET_DELEGATE_INVOKE_METHOD,               GetDelegateInvokeMethod,            SM_Delegate_RetIntPtr)
990 DEFINE_METHOD(STUBHELPERS,          GET_WINRT_FACTORY_RETURN_VALUE,           GetWinRTFactoryReturnValue,         SM_Obj_IntPtr_RetIntPtr)
991 DEFINE_METHOD(STUBHELPERS,          GET_OUTER_INSPECTABLE,                    GetOuterInspectable,                SM_Obj_IntPtr_RetIntPtr)
992 #ifdef MDA_SUPPORTED
993 DEFINE_METHOD(STUBHELPERS,          TRIGGER_EXCEPTION_SWALLOWED_MDA,          TriggerExceptionSwallowedMDA,       SM_Exception_IntPtr_RetException)
994 #endif // MDA_SUPPORTED
995 #endif // FEATURE_COMINTEROP
996 #if defined(MDA_SUPPORTED)
997 DEFINE_METHOD(STUBHELPERS,          CHECK_COLLECTED_DELEGATE_MDA, CheckCollectedDelegateMDA, SM_IntPtr_RetVoid)
998 #endif // MDA_SUPPORTED
999 DEFINE_METHOD(STUBHELPERS,          SET_LAST_ERROR,         SetLastError,               SM_RetVoid)
1000 DEFINE_METHOD(STUBHELPERS,          CLEAR_LAST_ERROR,       ClearLastError,             SM_RetVoid)
1001
1002 DEFINE_METHOD(STUBHELPERS,          THROW_INTEROP_PARAM_EXCEPTION, ThrowInteropParamException,   SM_Int_Int_RetVoid)
1003 DEFINE_METHOD(STUBHELPERS,          ADD_TO_CLEANUP_LIST_SAFEHANDLE,    AddToCleanupList,           SM_RefCleanupWorkListElement_SafeHandle_RetIntPtr)
1004 DEFINE_METHOD(STUBHELPERS,          ADD_TO_CLEANUP_LIST_DELEGATE,    AddToCleanupList,             SM_RefCleanupWorkListElement_Delegate_RetVoid)
1005 DEFINE_METHOD(STUBHELPERS,          DESTROY_CLEANUP_LIST,   DestroyCleanupList,         SM_RefCleanupWorkListElement_RetVoid)
1006 DEFINE_METHOD(STUBHELPERS,          GET_HR_EXCEPTION_OBJECT, GetHRExceptionObject,      SM_Int_RetException)
1007 DEFINE_METHOD(STUBHELPERS,          CREATE_CUSTOM_MARSHALER_HELPER, CreateCustomMarshalerHelper, SM_IntPtr_Int_IntPtr_RetIntPtr)
1008
1009 DEFINE_METHOD(STUBHELPERS,          CHECK_STRING_LENGTH,    CheckStringLength,          SM_Int_RetVoid)
1010
1011 DEFINE_METHOD(STUBHELPERS,          FMT_CLASS_UPDATE_NATIVE_INTERNAL,   FmtClassUpdateNativeInternal,   SM_Obj_PtrByte_RefCleanupWorkListElement_RetVoid)
1012 DEFINE_METHOD(STUBHELPERS,          FMT_CLASS_UPDATE_CLR_INTERNAL,      FmtClassUpdateCLRInternal,      SM_Obj_PtrByte_RetVoid)
1013 DEFINE_METHOD(STUBHELPERS,          LAYOUT_DESTROY_NATIVE_INTERNAL,     LayoutDestroyNativeInternal,    SM_PtrByte_IntPtr_RetVoid)
1014 DEFINE_METHOD(STUBHELPERS,          ALLOCATE_INTERNAL,                  AllocateInternal,               SM_IntPtr_RetObj)
1015 DEFINE_METHOD(STUBHELPERS,          STRLEN,                             strlen,                         SM_PtrSByt_RetInt)
1016 DEFINE_METHOD(STUBHELPERS,          MARSHAL_TO_MANAGED_VA_LIST_INTERNAL,MarshalToManagedVaListInternal, SM_IntPtr_IntPtr_RetVoid)
1017 DEFINE_METHOD(STUBHELPERS,          MARSHAL_TO_UNMANAGED_VA_LIST_INTERNAL,MarshalToUnmanagedVaListInternal,SM_IntPtr_UInt_IntPtr_RetVoid)
1018 DEFINE_METHOD(STUBHELPERS,          CALC_VA_LIST_SIZE,                  CalcVaListSize,                 SM_IntPtr_RetUInt)
1019 DEFINE_METHOD(STUBHELPERS,          VALIDATE_OBJECT,                    ValidateObject,                 SM_Obj_IntPtr_Obj_RetVoid)
1020 DEFINE_METHOD(STUBHELPERS,          VALIDATE_BYREF,                     ValidateByref,                  SM_IntPtr_IntPtr_Obj_RetVoid)
1021 DEFINE_METHOD(STUBHELPERS,          GET_STUB_CONTEXT,                   GetStubContext,                 SM_RetIntPtr)
1022 DEFINE_METHOD(STUBHELPERS,          LOG_PINNED_ARGUMENT,                LogPinnedArgument,              SM_IntPtr_IntPtr_RetVoid)
1023 #ifdef _TARGET_64BIT_
1024 DEFINE_METHOD(STUBHELPERS,          GET_STUB_CONTEXT_ADDR,              GetStubContextAddr,             SM_RetIntPtr)
1025 #endif // _TARGET_64BIT_
1026 #ifdef MDA_SUPPORTED
1027 DEFINE_METHOD(STUBHELPERS,          TRIGGER_GC_FOR_MDA,                 TriggerGCForMDA,                SM_RetVoid)
1028 #endif
1029 DEFINE_METHOD(STUBHELPERS,          SAFE_HANDLE_ADD_REF,    SafeHandleAddRef,           SM_SafeHandle_RefBool_RetIntPtr)
1030 DEFINE_METHOD(STUBHELPERS,          SAFE_HANDLE_RELEASE,    SafeHandleRelease,          SM_SafeHandle_RetVoid)
1031
1032 #ifdef PROFILING_SUPPORTED
1033 DEFINE_METHOD(STUBHELPERS,          PROFILER_BEGIN_TRANSITION_CALLBACK, ProfilerBeginTransitionCallback, SM_IntPtr_IntPtr_Obj_RetIntPtr)
1034 DEFINE_METHOD(STUBHELPERS,          PROFILER_END_TRANSITION_CALLBACK,   ProfilerEndTransitionCallback,   SM_IntPtr_IntPtr_RetVoid)
1035 #endif
1036
1037 #ifdef FEATURE_ARRAYSTUB_AS_IL
1038 DEFINE_METHOD(STUBHELPERS,          ARRAY_TYPE_CHECK,    ArrayTypeCheck,          SM_Obj_ArrObject_RetVoid)
1039 #endif
1040
1041 #ifdef FEATURE_MULTICASTSTUB_AS_IL
1042 DEFINE_METHOD(STUBHELPERS,          MULTICAST_DEBUGGER_TRACE_HELPER,    MulticastDebuggerTraceHelper,    SM_Obj_Int_RetVoid)
1043 #endif
1044
1045 DEFINE_CLASS(ANSICHARMARSHALER,     StubHelpers,            AnsiCharMarshaler)
1046 DEFINE_METHOD(ANSICHARMARSHALER,    CONVERT_TO_NATIVE,      ConvertToNative,            SM_Char_Bool_Bool_RetByte)
1047 DEFINE_METHOD(ANSICHARMARSHALER,    CONVERT_TO_MANAGED,     ConvertToManaged,           SM_Byte_RetChar)
1048 DEFINE_METHOD(ANSICHARMARSHALER,    DO_ANSI_CONVERSION,     DoAnsiConversion,           SM_Str_Bool_Bool_RefInt_RetArrByte)
1049
1050 DEFINE_CLASS(CSTRMARSHALER,         StubHelpers,            CSTRMarshaler)
1051 DEFINE_METHOD(CSTRMARSHALER,        CONVERT_TO_NATIVE,      ConvertToNative,            SM_Int_Str_IntPtr_RetIntPtr)
1052 DEFINE_METHOD(CSTRMARSHALER,        CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1053 DEFINE_METHOD(CSTRMARSHALER,        CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1054
1055 DEFINE_CLASS(WSTRBUFFERMARSHALER,   StubHelpers,            WSTRBufferMarshaler)
1056 DEFINE_METHOD(WSTRBUFFERMARSHALER,  CONVERT_TO_NATIVE,      ConvertToNative,            SM_Str_RetIntPtr)
1057 DEFINE_METHOD(WSTRBUFFERMARSHALER,  CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1058 DEFINE_METHOD(WSTRBUFFERMARSHALER,  CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1059
1060 DEFINE_CLASS(BSTRMARSHALER,         StubHelpers,            BSTRMarshaler)
1061 DEFINE_METHOD(BSTRMARSHALER,        CONVERT_TO_NATIVE,      ConvertToNative,            SM_Str_IntPtr_RetIntPtr)
1062 DEFINE_METHOD(BSTRMARSHALER,        CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1063 DEFINE_METHOD(BSTRMARSHALER,        CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1064
1065 DEFINE_CLASS(ANSIBSTRMARSHALER,     StubHelpers,            AnsiBSTRMarshaler)
1066 DEFINE_METHOD(ANSIBSTRMARSHALER,    CONVERT_TO_NATIVE,      ConvertToNative,            SM_Int_Str_RetIntPtr)
1067 DEFINE_METHOD(ANSIBSTRMARSHALER,    CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetStr)
1068 DEFINE_METHOD(ANSIBSTRMARSHALER,    CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1069
1070 #ifdef FEATURE_COMINTEROP
1071 DEFINE_CLASS(OBJECTMARSHALER,       StubHelpers,            ObjectMarshaler)
1072 DEFINE_METHOD(OBJECTMARSHALER,      CONVERT_TO_NATIVE,      ConvertToNative,            SM_ObjIntPtr_RetVoid)
1073 DEFINE_METHOD(OBJECTMARSHALER,      CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_RetObj)
1074 DEFINE_METHOD(OBJECTMARSHALER,      CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1075
1076 DEFINE_CLASS(HSTRINGMARSHALER,      StubHelpers,            HStringMarshaler)
1077 DEFINE_METHOD(HSTRINGMARSHALER,     CONVERT_TO_NATIVE_REFERENCE,    ConvertToNativeReference,   SM_Str_PtrHStringHeader_RetIntPtr)
1078 DEFINE_METHOD(HSTRINGMARSHALER,     CONVERT_TO_NATIVE,              ConvertToNative,            SM_Str_RetIntPtr)
1079 DEFINE_METHOD(HSTRINGMARSHALER,     CONVERT_TO_MANAGED,             ConvertToManaged,           SM_IntPtr_RetStr)
1080 DEFINE_METHOD(HSTRINGMARSHALER,     CLEAR_NATIVE,                   ClearNative,                SM_IntPtr_RetVoid)
1081
1082 DEFINE_CLASS(URIMARSHALER,          StubHelpers,                UriMarshaler)
1083 DEFINE_METHOD(URIMARSHALER,         GET_RAWURI_FROM_NATIVE,     GetRawUriFromNative,        SM_IntPtr_RetStr)
1084 DEFINE_METHOD(URIMARSHALER,         CREATE_NATIVE_URI_INSTANCE, CreateNativeUriInstance,    SM_Str_RetIntPtr)
1085
1086 DEFINE_CLASS(INTERFACEMARSHALER,    StubHelpers,            InterfaceMarshaler)
1087 DEFINE_METHOD(INTERFACEMARSHALER,   CONVERT_TO_NATIVE,      ConvertToNative,            SM_Obj_IntPtr_IntPtr_Int_RetIntPtr)
1088 DEFINE_METHOD(INTERFACEMARSHALER,   CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_IntPtr_IntPtr_Int_RetObj)
1089 DEFINE_METHOD(INTERFACEMARSHALER,   CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1090
1091
1092 DEFINE_CLASS(MNGD_SAFE_ARRAY_MARSHALER,  StubHelpers,                 MngdSafeArrayMarshaler)
1093 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CREATE_MARSHALER,            CreateMarshaler,            SM_IntPtr_IntPtr_Int_Int_RetVoid)
1094 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_SPACE_TO_NATIVE,     ConvertSpaceToNative,       SM_IntPtr_RefObj_IntPtr_RetVoid)
1095 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,  ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_Obj_RetVoid)
1096 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_SPACE_TO_MANAGED,    ConvertSpaceToManaged,      SM_IntPtr_RefObj_IntPtr_RetVoid)
1097 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED, ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1098 DEFINE_METHOD(MNGD_SAFE_ARRAY_MARSHALER, CLEAR_NATIVE,                ClearNative,                SM_IntPtr_RefObj_IntPtr_RetVoid)
1099
1100 DEFINE_CLASS(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, StubHelpers,         MngdHiddenLengthArrayMarshaler)
1101 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CREATE_MARSHALER,                 CreateMarshaler,            SM_IntPtr_IntPtr_IntPtr_UShrt_RetVoid)
1102 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_SPACE_TO_MANAGED,         ConvertSpaceToManaged,      SM_IntPtr_RefObj_IntPtr_Int_RetVoid)
1103 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED,      ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1104 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_SPACE_TO_NATIVE,          ConvertSpaceToNative,       SM_IntPtr_RefObj_IntPtr_RetVoid)
1105 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,       ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_RetVoid)
1106 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CLEAR_NATIVE_CONTENTS,            ClearNativeContents,        SM_IntPtr_IntPtr_Int_RetVoid)
1107 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CLEAR_NATIVE_CONTENTS_TYPE,       ClearNativeContents_Type,   NoSig)
1108
1109 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_DATETIME,     ConvertContentsToManaged_DateTime,     NoSig)
1110 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_TYPE,         ConvertContentsToManaged_Type,         NoSig)
1111 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_EXCEPTION,    ConvertContentsToManaged_Exception,    NoSig)
1112 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_NULLABLE,     ConvertContentsToManaged_Nullable,     NoSig)
1113 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED_KEYVALUEPAIR, ConvertContentsToManaged_KeyValuePair, NoSig)
1114
1115 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_DATETIME,     ConvertContentsToNative_DateTime,     NoSig)
1116 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_TYPE,         ConvertContentsToNative_Type,         NoSig)
1117 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_EXCEPTION,    ConvertContentsToNative_Exception,    NoSig)
1118 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_NULLABLE,     ConvertContentsToNative_Nullable,     NoSig)
1119 DEFINE_METHOD(MNGD_HIDDEN_LENGTH_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE_KEYVALUEPAIR, ConvertContentsToNative_KeyValuePair, NoSig)
1120
1121 DEFINE_CLASS(DATETIMEOFFSETMARSHALER,     StubHelpers,           DateTimeOffsetMarshaler)
1122 DEFINE_METHOD(DATETIMEOFFSETMARSHALER,    CONVERT_TO_NATIVE,     ConvertToNative,     SM_RefDateTimeOffset_RefDateTimeNative_RetVoid)
1123 DEFINE_METHOD(DATETIMEOFFSETMARSHALER,    CONVERT_TO_MANAGED,    ConvertToManaged,    SM_RefDateTimeOffset_RefDateTimeNative_RetVoid)
1124
1125 DEFINE_CLASS(NULLABLEMARSHALER,           StubHelpers,           NullableMarshaler)
1126 DEFINE_METHOD(NULLABLEMARSHALER,          CONVERT_TO_NATIVE,     ConvertToNative,     NoSig)
1127 DEFINE_METHOD(NULLABLEMARSHALER,          CONVERT_TO_MANAGED,    ConvertToManaged,    NoSig)
1128 DEFINE_METHOD(NULLABLEMARSHALER,          CONVERT_TO_MANAGED_RET_VOID,    ConvertToManagedRetVoid,    NoSig)
1129
1130 DEFINE_CLASS(SYSTEMTYPEMARSHALER,   StubHelpers,        SystemTypeMarshaler)
1131
1132 DEFINE_METHOD(SYSTEMTYPEMARSHALER,  CONVERT_TO_NATIVE,  ConvertToNative,    SM_Type_PtrTypeName_RetVoid)
1133 DEFINE_METHOD(SYSTEMTYPEMARSHALER,  CONVERT_TO_MANAGED, ConvertToManaged,   SM_PtrTypeName_RefType_RetVoid)
1134 DEFINE_METHOD(SYSTEMTYPEMARSHALER,  CLEAR_NATIVE,       ClearNative,        SM_PtrTypeName_RetVoid)
1135
1136 DEFINE_CLASS(KEYVALUEPAIRMARSHALER,  StubHelpers,            KeyValuePairMarshaler)
1137 DEFINE_METHOD(KEYVALUEPAIRMARSHALER, CONVERT_TO_NATIVE,      ConvertToNative,     NoSig)
1138 DEFINE_METHOD(KEYVALUEPAIRMARSHALER, CONVERT_TO_MANAGED,     ConvertToManaged,    NoSig)
1139 DEFINE_METHOD(KEYVALUEPAIRMARSHALER, CONVERT_TO_MANAGED_BOX, ConvertToManagedBox, NoSig)
1140
1141 DEFINE_CLASS(HRESULTEXCEPTIONMARSHALER,   StubHelpers,           HResultExceptionMarshaler)
1142 DEFINE_METHOD(HRESULTEXCEPTIONMARSHALER,  CONVERT_TO_NATIVE,     ConvertToNative,     SM_Exception_RetInt)
1143 DEFINE_METHOD(HRESULTEXCEPTIONMARSHALER,  CONVERT_TO_MANAGED,    ConvertToManaged,    SM_Int_RetException)
1144
1145 #endif // FEATURE_COMINTEROP
1146
1147 DEFINE_CLASS(VALUECLASSMARSHALER,   StubHelpers,            ValueClassMarshaler)
1148 DEFINE_METHOD(VALUECLASSMARSHALER,  CONVERT_TO_NATIVE,      ConvertToNative,            SM_IntPtrIntPtrIntPtr_RefCleanupWorkListElement_RetVoid)
1149 DEFINE_METHOD(VALUECLASSMARSHALER,  CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtrIntPtrIntPtr_RetVoid)
1150 DEFINE_METHOD(VALUECLASSMARSHALER,  CLEAR_NATIVE,           ClearNative,                SM_IntPtr_IntPtr_RetVoid)
1151
1152 DEFINE_CLASS(DATEMARSHALER,         StubHelpers,            DateMarshaler)
1153 DEFINE_METHOD(DATEMARSHALER,        CONVERT_TO_NATIVE,      ConvertToNative,            SM_DateTime_RetDbl)
1154 DEFINE_METHOD(DATEMARSHALER,        CONVERT_TO_MANAGED,     ConvertToManaged,           SM_Dbl_RetLong)
1155
1156 DEFINE_CLASS(VBBYVALSTRMARSHALER,   StubHelpers,            VBByValStrMarshaler)
1157 DEFINE_METHOD(VBBYVALSTRMARSHALER,  CONVERT_TO_NATIVE,      ConvertToNative,            SM_Str_Bool_Bool_RefInt_RetIntPtr)
1158 DEFINE_METHOD(VBBYVALSTRMARSHALER,  CONVERT_TO_MANAGED,     ConvertToManaged,           SM_IntPtr_Int_RetStr)
1159 DEFINE_METHOD(VBBYVALSTRMARSHALER,  CLEAR_NATIVE,           ClearNative,                SM_IntPtr_RetVoid)
1160
1161 DEFINE_CLASS(MNGD_NATIVE_ARRAY_MARSHALER,  StubHelpers,                 MngdNativeArrayMarshaler)
1162 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CREATE_MARSHALER,            CreateMarshaler,            SM_IntPtr_IntPtr_Int_RetVoid)
1163 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_SPACE_TO_NATIVE,     ConvertSpaceToNative,       SM_IntPtr_RefObj_IntPtr_RetVoid)
1164 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,  ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_RetVoid)
1165 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_SPACE_TO_MANAGED,    ConvertSpaceToManaged,      SM_IntPtr_RefObj_IntPtr_Int_RetVoid)
1166 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CONVERT_CONTENTS_TO_MANAGED, ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1167 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CLEAR_NATIVE,                ClearNative,                SM_IntPtr_IntPtr_Int_RetVoid)
1168 DEFINE_METHOD(MNGD_NATIVE_ARRAY_MARSHALER, CLEAR_NATIVE_CONTENTS,       ClearNativeContents,        SM_IntPtr_IntPtr_Int_RetVoid)
1169
1170 DEFINE_CLASS(MNGD_REF_CUSTOM_MARSHALER,  StubHelpers,                 MngdRefCustomMarshaler)
1171 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CREATE_MARSHALER,            CreateMarshaler,            SM_IntPtr_IntPtr_RetVoid)
1172 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CONVERT_CONTENTS_TO_NATIVE,  ConvertContentsToNative,    SM_IntPtr_RefObj_IntPtr_RetVoid)
1173 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CONVERT_CONTENTS_TO_MANAGED, ConvertContentsToManaged,   SM_IntPtr_RefObj_IntPtr_RetVoid)
1174 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CLEAR_NATIVE,                ClearNative,                SM_IntPtr_RefObj_IntPtr_RetVoid)
1175 DEFINE_METHOD(MNGD_REF_CUSTOM_MARSHALER, CLEAR_MANAGED,               ClearManaged,               SM_IntPtr_RefObj_IntPtr_RetVoid)
1176
1177 DEFINE_CLASS(ASANY_MARSHALER,            StubHelpers,                 AsAnyMarshaler)
1178 DEFINE_METHOD(ASANY_MARSHALER,           CTOR,                        .ctor,                      IM_IntPtr_RetVoid)
1179 DEFINE_METHOD(ASANY_MARSHALER,           CONVERT_TO_NATIVE,           ConvertToNative,            IM_Obj_Int_RetIntPtr)
1180 DEFINE_METHOD(ASANY_MARSHALER,           CONVERT_TO_MANAGED,          ConvertToManaged,           IM_Obj_IntPtr_RetVoid)
1181 DEFINE_METHOD(ASANY_MARSHALER,           CLEAR_NATIVE,                ClearNative,                IM_IntPtr_RetVoid)
1182
1183 DEFINE_CLASS(NATIVEVARIANT,         StubHelpers,            NativeVariant)
1184
1185 DEFINE_CLASS(WIN32NATIVE,           Win32,                  Win32Native)
1186 DEFINE_METHOD(WIN32NATIVE,          COTASKMEMALLOC,         CoTaskMemAlloc,         SM_UIntPtr_RetIntPtr)
1187 DEFINE_METHOD(WIN32NATIVE,          COTASKMEMFREE,          CoTaskMemFree,          SM_IntPtr_RetVoid)
1188
1189 #ifdef FEATURE_COMINTEROP
1190 DEFINE_CLASS(IITERABLE,              WinRT,                 IIterable`1)
1191 DEFINE_CLASS(IVECTOR,                WinRT,                 IVector`1)
1192 DEFINE_CLASS(IMAP,                   WinRT,                 IMap`2)
1193 DEFINE_CLASS(IKEYVALUEPAIR,          WinRT,                 IKeyValuePair`2)
1194 DEFINE_CLASS(IVECTORVIEW,            WinRT,                 IVectorView`1)
1195 DEFINE_CLASS(IMAPVIEW,               WinRT,                 IMapView`2)
1196 DEFINE_CLASS(IITERATOR,              WinRT,                 IIterator`1)
1197 DEFINE_CLASS(IPROPERTYVALUE,         WinRT,                 IPropertyValue)
1198 DEFINE_CLASS(IBINDABLEITERABLE,      WinRT,                 IBindableIterable)
1199 DEFINE_CLASS(IBINDABLEITERATOR,      WinRT,                 IBindableIterator)
1200 DEFINE_CLASS(IBINDABLEVECTOR,        WinRT,                 IBindableVector)
1201 DEFINE_CLASS(ICLOSABLE,             WinRT,                  IClosable)
1202
1203 DEFINE_CLASS(GET_ENUMERATOR_DELEGATE,        WinRT,                            GetEnumerator_Delegate`1)
1204 DEFINE_CLASS(ITERABLE_TO_ENUMERABLE_ADAPTER, WinRT,                            IterableToEnumerableAdapter)
1205 DEFINE_METHOD(ITERABLE_TO_ENUMERABLE_ADAPTER, GET_ENUMERATOR_STUB,             GetEnumerator_Stub, NoSig)
1206 DEFINE_METHOD(ITERABLE_TO_ENUMERABLE_ADAPTER, GET_ENUMERATOR_VARIANCE_STUB,    GetEnumerator_Variance_Stub, NoSig)
1207
1208 DEFINE_CLASS(VECTOR_TO_LIST_ADAPTER,        WinRT,                   VectorToListAdapter)
1209 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INDEXER_GET,             Indexer_Get, NoSig)
1210 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INDEXER_SET,             Indexer_Set, NoSig)
1211 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INDEX_OF,                IndexOf, NoSig)
1212 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       INSERT,                  Insert, NoSig)
1213 DEFINE_METHOD(VECTOR_TO_LIST_ADAPTER,       REMOVE_AT,               RemoveAt, NoSig)
1214
1215 DEFINE_CLASS(MAP_TO_DICTIONARY_ADAPTER,     WinRT,                   MapToDictionaryAdapter)
1216 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    INDEXER_GET,             Indexer_Get, NoSig)
1217 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    INDEXER_SET,             Indexer_Set, NoSig)
1218 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    KEYS,                    Keys, NoSig)
1219 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    VALUES,                  Values, NoSig)
1220 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    CONTAINS_KEY,            ContainsKey, NoSig)
1221 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    ADD,                     Add, NoSig)
1222 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    REMOVE,                  Remove, NoSig)
1223 DEFINE_METHOD(MAP_TO_DICTIONARY_ADAPTER,    TRY_GET_VALUE,           TryGetValue, NoSig)
1224
1225 DEFINE_CLASS(VECTOR_TO_COLLECTION_ADAPTER,  WinRT,                   VectorToCollectionAdapter)
1226 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, COUNT,                   Count, NoSig)
1227 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, IS_READ_ONLY,            IsReadOnly, NoSig)
1228 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, ADD,                     Add, NoSig)
1229 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, CLEAR,                   Clear, NoSig)
1230 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, CONTAINS,                Contains, NoSig)
1231 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, COPY_TO,                 CopyTo, NoSig)
1232 DEFINE_METHOD(VECTOR_TO_COLLECTION_ADAPTER, REMOVE,                  Remove, NoSig)
1233
1234 DEFINE_CLASS(MAP_TO_COLLECTION_ADAPTER,     WinRT,                   MapToCollectionAdapter)
1235 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    COUNT,                   Count, NoSig)
1236 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    IS_READ_ONLY,            IsReadOnly, NoSig)
1237 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    ADD,                     Add, NoSig)
1238 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    CLEAR,                   Clear, NoSig)
1239 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    CONTAINS,                Contains, NoSig)
1240 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    COPY_TO,                 CopyTo, NoSig)
1241 DEFINE_METHOD(MAP_TO_COLLECTION_ADAPTER,    REMOVE,                  Remove, NoSig)
1242
1243 DEFINE_CLASS(BINDABLEITERABLE_TO_ENUMERABLE_ADAPTER, WinRT,          BindableIterableToEnumerableAdapter)
1244 DEFINE_METHOD(BINDABLEITERABLE_TO_ENUMERABLE_ADAPTER, GET_ENUMERATOR_STUB, GetEnumerator_Stub, NoSig)
1245
1246 DEFINE_CLASS(BINDABLEVECTOR_TO_LIST_ADAPTER,       WinRT,            BindableVectorToListAdapter)
1247 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INDEXER_GET,      Indexer_Get, NoSig)
1248 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INDEXER_SET,      Indexer_Set, NoSig)
1249 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      ADD,              Add, NoSig)
1250 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      CONTAINS,         Contains, NoSig)
1251 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      CLEAR,            Clear, NoSig)
1252 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      IS_READ_ONLY,     IsReadOnly, NoSig)
1253 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      IS_FIXED_SIZE,    IsFixedSize, NoSig)
1254 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INDEX_OF,         IndexOf, NoSig)
1255 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      INSERT,           Insert, NoSig)
1256 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      REMOVE,           Remove, NoSig)
1257 DEFINE_METHOD(BINDABLEVECTOR_TO_LIST_ADAPTER,      REMOVE_AT,        RemoveAt, NoSig)
1258
1259 DEFINE_CLASS(BINDABLEVECTOR_TO_COLLECTION_ADAPTER,  WinRT,           BindableVectorToCollectionAdapter)
1260 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, COPY_TO,         CopyTo, NoSig)
1261 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, COUNT,           Count, NoSig)
1262 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, SYNC_ROOT,       SyncRoot, NoSig)
1263 DEFINE_METHOD(BINDABLEVECTOR_TO_COLLECTION_ADAPTER, IS_SYNCHRONIZED, IsSynchronized, NoSig)
1264
1265 DEFINE_CLASS(ENUMERABLE_TO_ITERABLE_ADAPTER, WinRT,                  EnumerableToIterableAdapter)
1266 DEFINE_METHOD(ENUMERABLE_TO_ITERABLE_ADAPTER, FIRST_STUB,            First_Stub, NoSig)
1267
1268 DEFINE_CLASS(LIST_TO_VECTOR_ADAPTER,       WinRT,                    ListToVectorAdapter)
1269 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      GET_AT,                   GetAt, NoSig)
1270 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      SIZE,                     Size, NoSig)
1271 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      GET_VIEW,                 GetView, NoSig)
1272 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      INDEX_OF,                 IndexOf, NoSig)
1273 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      SET_AT,                   SetAt, NoSig)
1274 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      INSERT_AT,                InsertAt, NoSig)
1275 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      REMOVE_AT,                RemoveAt, NoSig)
1276 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      APPEND,                   Append, NoSig)
1277 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      REMOVE_AT_END,            RemoveAtEnd, NoSig)
1278 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      CLEAR,                    Clear, NoSig)
1279 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      GET_MANY,                 GetMany, NoSig)
1280 DEFINE_METHOD(LIST_TO_VECTOR_ADAPTER,      REPLACE_ALL,              ReplaceAll, NoSig)
1281
1282 DEFINE_CLASS(DICTIONARY_TO_MAP_ADAPTER,    WinRT,                    DictionaryToMapAdapter)
1283 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   LOOKUP,                   Lookup, NoSig)
1284 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   SIZE,                     Size, NoSig)
1285 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   HAS_KEY,                  HasKey, NoSig)
1286 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   GET_VIEW,                 GetView, NoSig)
1287 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   INSERT,                   Insert, NoSig)
1288 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   REMOVE,                   Remove, NoSig)
1289 DEFINE_METHOD(DICTIONARY_TO_MAP_ADAPTER,   CLEAR,                    Clear, NoSig)
1290
1291 DEFINE_CLASS(IVECTORVIEW_TO_IREADONLYCOLLECTION_ADAPTER,  WinRT,     VectorViewToReadOnlyCollectionAdapter)
1292 DEFINE_METHOD(IVECTORVIEW_TO_IREADONLYCOLLECTION_ADAPTER, COUNT,     Count, NoSig)
1293
1294 DEFINE_CLASS(IMAPVIEW_TO_IREADONLYCOLLECTION_ADAPTER,  WinRT,        MapViewToReadOnlyCollectionAdapter)
1295 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYCOLLECTION_ADAPTER, COUNT,        Count, NoSig)
1296
1297 DEFINE_CLASS(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,     WinRT,        IReadOnlyListToIVectorViewAdapter)
1298 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    GETAT,        GetAt, NoSig)
1299 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    GETMANY,      GetMany, NoSig)
1300 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    INDEXOF,      IndexOf, NoSig)
1301 DEFINE_METHOD(IREADONLYLIST_TO_IVECTORVIEW_ADAPTER,    SIZE,         Size, NoSig)
1302
1303 DEFINE_CLASS(INDEXER_GET_DELEGATE,                     WinRT,        Indexer_Get_Delegate`1)
1304 DEFINE_CLASS(IVECTORVIEW_TO_IREADONLYLIST_ADAPTER,     WinRT,        IVectorViewToIReadOnlyListAdapter)
1305 DEFINE_METHOD(IVECTORVIEW_TO_IREADONLYLIST_ADAPTER,    INDEXER_GET,  Indexer_Get, NoSig)
1306 DEFINE_METHOD(IVECTORVIEW_TO_IREADONLYLIST_ADAPTER,    INDEXER_GET_VARIANCE, Indexer_Get_Variance, NoSig)
1307
1308 DEFINE_CLASS(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER,  WinRT,        IReadOnlyDictionaryToIMapViewAdapter)
1309 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, HASKEY,       HasKey, NoSig)
1310 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, LOOKUP,       Lookup, NoSig)
1311 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, SIZE,         Size, NoSig)
1312 DEFINE_METHOD(IREADONLYDICTIONARY_TO_IMAPVIEW_ADAPTER, SPLIT,        Split, NoSig)
1313
1314 DEFINE_CLASS(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER,  WinRT,        IMapViewToIReadOnlyDictionaryAdapter)
1315 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, CONTAINSKEY,  ContainsKey, NoSig)
1316 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, INDEXER_GET,  Indexer_Get, NoSig)
1317 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, TRYGETVALUE,  TryGetValue, NoSig)
1318 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, KEYS,         Keys, NoSig)
1319 DEFINE_METHOD(IMAPVIEW_TO_IREADONLYDICTIONARY_ADAPTER, VALUES,       Values, NoSig)
1320
1321 DEFINE_CLASS(ENUMERABLE_TO_BINDABLEITERABLE_ADAPTER,   WinRT,        EnumerableToBindableIterableAdapter)
1322 DEFINE_METHOD(ENUMERABLE_TO_BINDABLEITERABLE_ADAPTER,  FIRST_STUB,   First_Stub, NoSig)
1323
1324 DEFINE_CLASS(LIST_TO_BINDABLEVECTOR_ADAPTER,       WinRT,            ListToBindableVectorAdapter)
1325 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      GET_AT,           GetAt, NoSig)
1326 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      SIZE,             Size, NoSig)
1327 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      GET_VIEW,         GetView, NoSig)
1328 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      INDEX_OF,         IndexOf, NoSig)
1329 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      SET_AT,           SetAt, NoSig)
1330 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      INSERT_AT,        InsertAt, NoSig)
1331 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      REMOVE_AT,        RemoveAt, NoSig)
1332 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      APPEND,           Append, NoSig)
1333 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      REMOVE_AT_END,    RemoveAtEnd, NoSig)
1334 DEFINE_METHOD(LIST_TO_BINDABLEVECTOR_ADAPTER,      CLEAR,            Clear, NoSig)
1335
1336 DEFINE_CLASS(IDISPOSABLE_TO_ICLOSABLE_ADAPTER,     WinRT,            IDisposableToIClosableAdapter)
1337 DEFINE_METHOD(IDISPOSABLE_TO_ICLOSABLE_ADAPTER,    CLOSE,            Close, NoSig)
1338
1339 DEFINE_CLASS(ICLOSABLE_TO_IDISPOSABLE_ADAPTER,     WinRT,            IClosableToIDisposableAdapter)
1340 DEFINE_METHOD(ICLOSABLE_TO_IDISPOSABLE_ADAPTER,    DISPOSE,          Dispose, NoSig)
1341
1342 #endif // FEATURE_COMINTEROP
1343
1344 DEFINE_CLASS(SZARRAYHELPER,         System,                        SZArrayHelper)
1345 // Note: The order of methods here has to match order they are implemented on the interfaces in
1346 // IEnumerable`1
1347 DEFINE_METHOD(SZARRAYHELPER,        GETENUMERATOR,          GetEnumerator,              NoSig)
1348 // ICollection`1/IReadOnlyCollection`1
1349 DEFINE_METHOD(SZARRAYHELPER,        GET_COUNT,              get_Count,                  NoSig)
1350 DEFINE_METHOD(SZARRAYHELPER,        ISREADONLY,             get_IsReadOnly,             NoSig)
1351 DEFINE_METHOD(SZARRAYHELPER,        ADD,                    Add,                        NoSig)
1352 DEFINE_METHOD(SZARRAYHELPER,        CLEAR,                  Clear,                      NoSig)
1353 DEFINE_METHOD(SZARRAYHELPER,        CONTAINS,               Contains,                   NoSig)
1354 DEFINE_METHOD(SZARRAYHELPER,        COPYTO,                 CopyTo,                     NoSig)
1355 DEFINE_METHOD(SZARRAYHELPER,        REMOVE,                 Remove,                     NoSig)
1356 // IList`1/IReadOnlyList`1
1357 DEFINE_METHOD(SZARRAYHELPER,        GET_ITEM,               get_Item,                   NoSig)
1358 DEFINE_METHOD(SZARRAYHELPER,        SET_ITEM,               set_Item,                   NoSig)
1359 DEFINE_METHOD(SZARRAYHELPER,        INDEXOF,                IndexOf,                    NoSig)
1360 DEFINE_METHOD(SZARRAYHELPER,        INSERT,                 Insert,                     NoSig)
1361 DEFINE_METHOD(SZARRAYHELPER,        REMOVEAT,               RemoveAt,                   NoSig)
1362
1363 DEFINE_CLASS(IENUMERABLEGENERIC,    CollectionsGeneric,     IEnumerable`1)
1364 DEFINE_CLASS(IENUMERATORGENERIC,    CollectionsGeneric,     IEnumerator`1)
1365 DEFINE_CLASS(ICOLLECTIONGENERIC,    CollectionsGeneric,     ICollection`1)
1366 DEFINE_CLASS(ILISTGENERIC,          CollectionsGeneric,     IList`1)
1367 DEFINE_CLASS(IREADONLYCOLLECTIONGENERIC,CollectionsGeneric, IReadOnlyCollection`1)
1368 DEFINE_CLASS(IREADONLYLISTGENERIC,  CollectionsGeneric,     IReadOnlyList`1)
1369 DEFINE_CLASS(IREADONLYDICTIONARYGENERIC,CollectionsGeneric, IReadOnlyDictionary`2)
1370 DEFINE_CLASS(IDICTIONARYGENERIC,    CollectionsGeneric,     IDictionary`2)
1371 DEFINE_CLASS(KEYVALUEPAIRGENERIC,   CollectionsGeneric,     KeyValuePair`2)
1372
1373 DEFINE_CLASS(ICOMPARABLEGENERIC,    System,                 IComparable`1)
1374 DEFINE_CLASS(IEQUATABLEGENERIC,     System,                 IEquatable`1)
1375
1376 DEFINE_CLASS_U(Reflection,             LoaderAllocator,          LoaderAllocatorObject)
1377 DEFINE_FIELD_U(m_slots,                  LoaderAllocatorObject,      m_pSlots)
1378 DEFINE_FIELD_U(m_slotsUsed,              LoaderAllocatorObject,      m_slotsUsed)
1379 DEFINE_CLASS(LOADERALLOCATOR,           Reflection,             LoaderAllocator)
1380 DEFINE_METHOD(LOADERALLOCATOR,          CTOR,                   .ctor,                    IM_RetVoid)
1381
1382 DEFINE_CLASS_U(Reflection,             LoaderAllocatorScout,     LoaderAllocatorScoutObject)
1383 DEFINE_FIELD_U(m_nativeLoaderAllocator,  LoaderAllocatorScoutObject,      m_nativeLoaderAllocator)
1384 DEFINE_CLASS(LOADERALLOCATORSCOUT,      Reflection,             LoaderAllocatorScout)
1385
1386 DEFINE_CLASS(CONTRACTEXCEPTION,     CodeContracts,  ContractException)
1387
1388 DEFINE_CLASS_U(CodeContracts,       ContractException,          ContractExceptionObject)
1389 DEFINE_FIELD_U(_kind,               ContractExceptionObject,    _Kind)
1390 DEFINE_FIELD_U(_userMessage,        ContractExceptionObject,    _UserMessage)
1391 DEFINE_FIELD_U(_condition,          ContractExceptionObject,    _Condition)
1392
1393 #ifdef FEATURE_COMINTEROP
1394 DEFINE_CLASS(CAUSALITY_TRACE_LEVEL, WindowsFoundationDiag,   CausalityTraceLevel)
1395 DEFINE_CLASS(ASYNC_TRACING_EVENT_ARGS,       WindowsFoundationDiag,         TracingStatusChangedEventArgs)
1396 DEFINE_PROPERTY(ASYNC_TRACING_EVENT_ARGS, ENABLED, Enabled, Bool)
1397 DEFINE_PROPERTY(ASYNC_TRACING_EVENT_ARGS, TRACELEVEL, TraceLevel, CausalityTraceLevel)
1398 DEFINE_CLASS(IASYNC_TRACING_EVENT_ARGS,      WindowsFoundationDiag,         ITracingStatusChangedEventArgs)
1399 DEFINE_PROPERTY(IASYNC_TRACING_EVENT_ARGS, ENABLED, Enabled, Bool)
1400 DEFINE_PROPERTY(IASYNC_TRACING_EVENT_ARGS, TRACELEVEL, TraceLevel, CausalityTraceLevel)
1401 #endif // FEATURE_COMINTEROP
1402
1403 DEFINE_CLASS(MODULEBASE,        Reflection,         Module)
1404
1405 #ifdef FEATURE_ICASTABLE
1406 DEFINE_CLASS(ICASTABLE,         CompilerServices,   ICastable)
1407
1408 DEFINE_CLASS(ICASTABLEHELPERS,         CompilerServices,   ICastableHelpers)
1409 DEFINE_METHOD(ICASTABLEHELPERS,        ISINSTANCEOF,       IsInstanceOfInterface, SM_ICastable_RtType_RefException_RetBool)
1410 DEFINE_METHOD(ICASTABLEHELPERS,        GETIMPLTYPE,        GetImplType, SM_ICastable_RtType_RetRtType)
1411
1412 #endif // FEATURE_ICASTABLE
1413
1414 DEFINE_CLASS(CUTF8MARSHALER, StubHelpers, UTF8Marshaler)
1415 DEFINE_METHOD(CUTF8MARSHALER, CONVERT_TO_NATIVE, ConvertToNative, SM_Int_Str_IntPtr_RetIntPtr)
1416 DEFINE_METHOD(CUTF8MARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, SM_IntPtr_RetStr)
1417 DEFINE_METHOD(CUTF8MARSHALER, CLEAR_NATIVE, ClearNative, SM_IntPtr_RetVoid)
1418
1419 DEFINE_CLASS(UTF8BUFFERMARSHALER, StubHelpers, UTF8BufferMarshaler)
1420 DEFINE_METHOD(UTF8BUFFERMARSHALER, CONVERT_TO_NATIVE, ConvertToNative, NoSig)
1421 DEFINE_METHOD(UTF8BUFFERMARSHALER, CONVERT_TO_MANAGED, ConvertToManaged, NoSig)
1422
1423 // Classes referenced in EqualityComparer<T>.Default optimization
1424
1425 DEFINE_CLASS(BYTE_EQUALITYCOMPARER, CollectionsGeneric, ByteEqualityComparer)
1426 DEFINE_CLASS(ENUM_EQUALITYCOMPARER, CollectionsGeneric, EnumEqualityComparer`1)
1427 DEFINE_CLASS(LONG_ENUM_EQUALITYCOMPARER, CollectionsGeneric, LongEnumEqualityComparer`1)
1428 DEFINE_CLASS(NULLABLE_EQUALITYCOMPARER, CollectionsGeneric, NullableEqualityComparer`1)
1429 DEFINE_CLASS(GENERIC_EQUALITYCOMPARER, CollectionsGeneric, GenericEqualityComparer`1)
1430 DEFINE_CLASS(OBJECT_EQUALITYCOMPARER, CollectionsGeneric, ObjectEqualityComparer`1)
1431
1432 DEFINE_CLASS(INATTRIBUTE, Interop, InAttribute)
1433
1434 #undef DEFINE_CLASS
1435 #undef DEFINE_METHOD
1436 #undef DEFINE_FIELD
1437 #undef DEFINE_CLASS_U
1438 #undef DEFINE_FIELD_U