Use TARGET_POINTER_SIZE macro (#16640)
authorEgor Chesakov <Egor.Chesakov@microsoft.com>
Sat, 3 Mar 2018 00:39:36 +0000 (16:39 -0800)
committerJan Kotas <jkotas@microsoft.com>
Sat, 3 Mar 2018 00:39:36 +0000 (16:39 -0800)
* Replace sizeof(void*) with TARGET_POINTER_SIZE in TYPEINFO in src/inc/cortypeinfo.h

* Replace sizeof(LPVOID) with TARGET_POINTER_SIZE in DEFINEELEMENTTYPEINFO in src/vm/siginfo.cpp

* Define TARGET_POINTER_SIZE as POINTERSIZE_BYTES in src/ToolBox/SOS/Strike/util.h

src/ToolBox/SOS/Strike/util.h
src/inc/cortypeinfo.h
src/vm/siginfo.cpp

index a6ca86e..7ffba1c 100644 (file)
@@ -60,6 +60,10 @@ struct IMDInternalImport;
 #define POINTERSIZE_TYPE "I32"
 #endif
 
+#ifndef TARGET_POINTER_SIZE
+#define TARGET_POINTER_SIZE POINTERSIZE_BYTES
+#endif // TARGET_POINTER_SIZE
+
 #if defined(_MSC_VER)
 #pragma warning(disable:4510 4512 4610)
 #endif
index ee75b8f..8fdfe43 100644 (file)
@@ -6,44 +6,44 @@
 
 #define NO_SIZE ((BYTE)-1)
 
-// TYPEINFO(type (CorElementType),  namespace, class,          size,           gcType,         isArray,isPrim, isFloat,isModifier,isGenVariable)
-
-TYPEINFO(ELEMENT_TYPE_END,          NULL, NULL,                NO_SIZE,        TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x00
-TYPEINFO(ELEMENT_TYPE_VOID,         "System", "Void",          0,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x01
-TYPEINFO(ELEMENT_TYPE_BOOLEAN,      "System", "Boolean",       1,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x02
-TYPEINFO(ELEMENT_TYPE_CHAR,         "System", "Char",          2,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x03
-TYPEINFO(ELEMENT_TYPE_I1,           "System", "SByte",         1,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x04
-TYPEINFO(ELEMENT_TYPE_U1,           "System", "Byte",          1,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x05
-TYPEINFO(ELEMENT_TYPE_I2,           "System", "Int16",         2,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x06
-TYPEINFO(ELEMENT_TYPE_U2,           "System", "UInt16",        2,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x07
-TYPEINFO(ELEMENT_TYPE_I4,           "System", "Int32",         4,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x08
-TYPEINFO(ELEMENT_TYPE_U4,           "System", "UInt32",        4,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x09
-TYPEINFO(ELEMENT_TYPE_I8,           "System", "Int64",         8,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x0a
-TYPEINFO(ELEMENT_TYPE_U8,           "System", "UInt64",        8,              TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x0b
-
-TYPEINFO(ELEMENT_TYPE_R4,           "System", "Single",        4,              TYPE_GC_NONE,   false,  true,   true,   false,  false) // 0x0c
-TYPEINFO(ELEMENT_TYPE_R8,           "System", "Double",        8,              TYPE_GC_NONE,   false,  true,   true,   false,  false) // 0x0d
-
-TYPEINFO(ELEMENT_TYPE_STRING,       "System", "String",        sizeof(void*),  TYPE_GC_REF,    false,  false,  false,  false,  false) // 0x0e
-TYPEINFO(ELEMENT_TYPE_PTR,          NULL, NULL,                sizeof(void*),  TYPE_GC_NONE,   false,  false,  false,  true,   false) // 0x0f
-TYPEINFO(ELEMENT_TYPE_BYREF,        NULL, NULL,                sizeof(void*),  TYPE_GC_BYREF,  false,  false,  false,  true,   false) // 0x10
-TYPEINFO(ELEMENT_TYPE_VALUETYPE,    NULL, NULL,                NO_SIZE,        TYPE_GC_OTHER,  false,  false,  false,  false,  false) // 0x11
-TYPEINFO(ELEMENT_TYPE_CLASS,        NULL, NULL,                sizeof(void*),  TYPE_GC_REF,    false,  false,  false,  false,  false) // 0x12
-TYPEINFO(ELEMENT_TYPE_VAR,          NULL, NULL,                sizeof(void*),  TYPE_GC_OTHER,  false,  false,  false,  false,  true)  // 0x13
-TYPEINFO(ELEMENT_TYPE_ARRAY,        NULL, NULL,                sizeof(void*),  TYPE_GC_REF,    true,   false,  false,  true,   false) // 0x14
-
-TYPEINFO(ELEMENT_TYPE_GENERICINST,  NULL, NULL,                sizeof(void*),  TYPE_GC_OTHER,  false,  false,  false,  false,  false) // 0x15
-TYPEINFO(ELEMENT_TYPE_TYPEDBYREF,   "System", "TypedReference",2*sizeof(void*),TYPE_GC_BYREF,  false,  false,  false,  false,  false) // 0x16
-TYPEINFO(ELEMENT_TYPE_VALUEARRAY_UNSUPPORTED, NULL,NULL,       NO_SIZE,        TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x17 (unsupported, not in the ECMA spec)
-
-TYPEINFO(ELEMENT_TYPE_I,            "System", "IntPtr",        sizeof(void*),  TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x18
-TYPEINFO(ELEMENT_TYPE_U,            "System", "UIntPtr",       sizeof(void*),  TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x19
-TYPEINFO(ELEMENT_TYPE_R_UNSUPPORTED,NULL, NULL,                NO_SIZE,        TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x1a (unsupported, not in the ECMA spec)
-
-TYPEINFO(ELEMENT_TYPE_FNPTR,        NULL, NULL,                sizeof(void*),  TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x1b
-TYPEINFO(ELEMENT_TYPE_OBJECT,       "System", "Object",        sizeof(void*),  TYPE_GC_REF,    false,  false,  false,  false,  false) // 0x1c
-TYPEINFO(ELEMENT_TYPE_SZARRAY,      NULL, NULL,                sizeof(void*),  TYPE_GC_REF,    true,   false,  false,  true,   false) // 0x1d
-TYPEINFO(ELEMENT_TYPE_MVAR,         NULL, NULL,                sizeof(void*),  TYPE_GC_OTHER,  false,  false,  false,  false,  true)  // x01e
-TYPEINFO(ELEMENT_TYPE_CMOD_REQD,    NULL, NULL,                0,              TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x1f
-TYPEINFO(ELEMENT_TYPE_CMOD_OPT,     NULL, NULL,                0,              TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x20
-TYPEINFO(ELEMENT_TYPE_INTERNAL,     NULL, NULL,                0,              TYPE_GC_OTHER,  false,  false,  false,  false,  false) // 0x21
+// TYPEINFO(type (CorElementType),  namespace, class,          size,                 gcType,         isArray,isPrim, isFloat,isModifier,isGenVariable)
+
+TYPEINFO(ELEMENT_TYPE_END,          NULL, NULL,                NO_SIZE,              TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x00
+TYPEINFO(ELEMENT_TYPE_VOID,         "System", "Void",          0,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x01
+TYPEINFO(ELEMENT_TYPE_BOOLEAN,      "System", "Boolean",       1,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x02
+TYPEINFO(ELEMENT_TYPE_CHAR,         "System", "Char",          2,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x03
+TYPEINFO(ELEMENT_TYPE_I1,           "System", "SByte",         1,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x04
+TYPEINFO(ELEMENT_TYPE_U1,           "System", "Byte",          1,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x05
+TYPEINFO(ELEMENT_TYPE_I2,           "System", "Int16",         2,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x06
+TYPEINFO(ELEMENT_TYPE_U2,           "System", "UInt16",        2,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x07
+TYPEINFO(ELEMENT_TYPE_I4,           "System", "Int32",         4,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x08
+TYPEINFO(ELEMENT_TYPE_U4,           "System", "UInt32",        4,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x09
+TYPEINFO(ELEMENT_TYPE_I8,           "System", "Int64",         8,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x0a
+TYPEINFO(ELEMENT_TYPE_U8,           "System", "UInt64",        8,                    TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x0b
+
+TYPEINFO(ELEMENT_TYPE_R4,           "System", "Single",        4,                    TYPE_GC_NONE,   false,  true,   true,   false,  false) // 0x0c
+TYPEINFO(ELEMENT_TYPE_R8,           "System", "Double",        8,                    TYPE_GC_NONE,   false,  true,   true,   false,  false) // 0x0d
+
+TYPEINFO(ELEMENT_TYPE_STRING,       "System", "String",        TARGET_POINTER_SIZE,  TYPE_GC_REF,    false,  false,  false,  false,  false) // 0x0e
+TYPEINFO(ELEMENT_TYPE_PTR,          NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_NONE,   false,  false,  false,  true,   false) // 0x0f
+TYPEINFO(ELEMENT_TYPE_BYREF,        NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_BYREF,  false,  false,  false,  true,   false) // 0x10
+TYPEINFO(ELEMENT_TYPE_VALUETYPE,    NULL, NULL,                NO_SIZE,              TYPE_GC_OTHER,  false,  false,  false,  false,  false) // 0x11
+TYPEINFO(ELEMENT_TYPE_CLASS,        NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_REF,    false,  false,  false,  false,  false) // 0x12
+TYPEINFO(ELEMENT_TYPE_VAR,          NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_OTHER,  false,  false,  false,  false,  true)  // 0x13
+TYPEINFO(ELEMENT_TYPE_ARRAY,        NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_REF,    true,   false,  false,  true,   false) // 0x14
+
+TYPEINFO(ELEMENT_TYPE_GENERICINST,  NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_OTHER,  false,  false,  false,  false,  false) // 0x15
+TYPEINFO(ELEMENT_TYPE_TYPEDBYREF,   "System", "TypedReference",2*TARGET_POINTER_SIZE,TYPE_GC_BYREF,  false,  false,  false,  false,  false) // 0x16
+TYPEINFO(ELEMENT_TYPE_VALUEARRAY_UNSUPPORTED, NULL,NULL,       NO_SIZE,              TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x17 (unsupported, not in the ECMA spec)
+
+TYPEINFO(ELEMENT_TYPE_I,            "System", "IntPtr",        TARGET_POINTER_SIZE,  TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x18
+TYPEINFO(ELEMENT_TYPE_U,            "System", "UIntPtr",       TARGET_POINTER_SIZE,  TYPE_GC_NONE,   false,  true,   false,  false,  false) // 0x19
+TYPEINFO(ELEMENT_TYPE_R_UNSUPPORTED,NULL, NULL,                NO_SIZE,              TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x1a (unsupported, not in the ECMA spec)
+
+TYPEINFO(ELEMENT_TYPE_FNPTR,        NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x1b
+TYPEINFO(ELEMENT_TYPE_OBJECT,       "System", "Object",        TARGET_POINTER_SIZE,  TYPE_GC_REF,    false,  false,  false,  false,  false) // 0x1c
+TYPEINFO(ELEMENT_TYPE_SZARRAY,      NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_REF,    true,   false,  false,  true,   false) // 0x1d
+TYPEINFO(ELEMENT_TYPE_MVAR,         NULL, NULL,                TARGET_POINTER_SIZE,  TYPE_GC_OTHER,  false,  false,  false,  false,  true)  // x01e
+TYPEINFO(ELEMENT_TYPE_CMOD_REQD,    NULL, NULL,                0,                    TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x1f
+TYPEINFO(ELEMENT_TYPE_CMOD_OPT,     NULL, NULL,                0,                    TYPE_GC_NONE,   false,  false,  false,  false,  false) // 0x20
+TYPEINFO(ELEMENT_TYPE_INTERNAL,     NULL, NULL,                0,                    TYPE_GC_OTHER,  false,  false,  false,  false,  false) // 0x21
index fa26002..5fe0002 100644 (file)
@@ -78,54 +78,54 @@ const ElementTypeInfo gElementTypeInfo[] = {
 // 
 // Note: This table is very similar to the one in file:corTypeInfo.h with these exceptions:
 //  reg column is missing in corTypeInfo.h
-//  ELEMENT_TYPE_VAR, ELEMENT_TYPE_GENERICINST, ELEMENT_TYPE_MVAR ... size -1 vs. sizeof(void*) in corTypeInfo.h
+//  ELEMENT_TYPE_VAR, ELEMENT_TYPE_GENERICINST, ELEMENT_TYPE_MVAR ... size -1 vs. TARGET_POINTER_SIZE in corTypeInfo.h
 //  ELEMENT_TYPE_CMOD_REQD, ELEMENT_TYPE_CMOD_OPT, ELEMENT_TYPE_INTERNAL ... size -1 vs. 0 in corTypeInfo.h
 //  ELEMENT_TYPE_INTERNAL ... GC type is TYPE_GC_NONE vs. TYPE_GC_OTHER in corTypeInfo.h
 // 
-//                    name                         cbsize           gc             reg
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_END,            -1,              TYPE_GC_NONE,  0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VOID,           0,               TYPE_GC_NONE,  0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_BOOLEAN,        1,               TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CHAR,           2,               TYPE_GC_NONE,  1)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I1,             1,               TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U1,             1,               TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I2,             2,               TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U2,             2,               TYPE_GC_NONE,  1)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I4,             4,               TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U4,             4,               TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I8,             8,               TYPE_GC_NONE,  0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U8,             8,               TYPE_GC_NONE,  0)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_R4,             4,               TYPE_GC_NONE,  0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_R8,             8,               TYPE_GC_NONE,  0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_STRING,         sizeof(LPVOID),  TYPE_GC_REF,   1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_PTR,            sizeof(LPVOID),  TYPE_GC_NONE,  1)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_BYREF,          sizeof(LPVOID),  TYPE_GC_BYREF, 1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VALUETYPE,      -1,              TYPE_GC_OTHER, 0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CLASS,          sizeof(LPVOID),  TYPE_GC_REF,   1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VAR,            -1,              TYPE_GC_OTHER, 1)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_ARRAY,          sizeof(LPVOID),  TYPE_GC_REF,   1)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_GENERICINST,    -1,              TYPE_GC_OTHER, 0)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_TYPEDBYREF,     sizeof(LPVOID)*2,TYPE_GC_BYREF, 0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VALUEARRAY_UNSUPPORTED, -1,      TYPE_GC_NONE,  0)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I,              sizeof(LPVOID),  TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U,              sizeof(LPVOID),  TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_R_UNSUPPORTED,  -1,              TYPE_GC_NONE,  0)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_FNPTR,          sizeof(LPVOID),  TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_OBJECT,         sizeof(LPVOID),  TYPE_GC_REF,   1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_SZARRAY,        sizeof(LPVOID),  TYPE_GC_REF,   1)
-
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_MVAR,           -1,              TYPE_GC_OTHER, 1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CMOD_REQD,      -1,              TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CMOD_OPT,       -1,              TYPE_GC_NONE,  1)
-DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_INTERNAL,       -1,              TYPE_GC_NONE,  0)
+//                    name                         cbsize                gc             reg
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_END,            -1,                   TYPE_GC_NONE,  0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VOID,           0,                    TYPE_GC_NONE,  0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_BOOLEAN,        1,                    TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CHAR,           2,                    TYPE_GC_NONE,  1)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I1,             1,                    TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U1,             1,                    TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I2,             2,                    TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U2,             2,                    TYPE_GC_NONE,  1)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I4,             4,                    TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U4,             4,                    TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I8,             8,                    TYPE_GC_NONE,  0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U8,             8,                    TYPE_GC_NONE,  0)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_R4,             4,                    TYPE_GC_NONE,  0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_R8,             8,                    TYPE_GC_NONE,  0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_STRING,         TARGET_POINTER_SIZE,  TYPE_GC_REF,   1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_PTR,            TARGET_POINTER_SIZE,  TYPE_GC_NONE,  1)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_BYREF,          TARGET_POINTER_SIZE,  TYPE_GC_BYREF, 1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VALUETYPE,      -1,                   TYPE_GC_OTHER, 0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CLASS,          TARGET_POINTER_SIZE,  TYPE_GC_REF,   1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VAR,            -1,                   TYPE_GC_OTHER, 1)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_ARRAY,          TARGET_POINTER_SIZE,  TYPE_GC_REF,   1)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_GENERICINST,    -1,                   TYPE_GC_OTHER, 0)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_TYPEDBYREF,     TARGET_POINTER_SIZE*2,TYPE_GC_BYREF, 0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_VALUEARRAY_UNSUPPORTED, -1,           TYPE_GC_NONE,  0)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_I,              TARGET_POINTER_SIZE,  TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_U,              TARGET_POINTER_SIZE,  TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_R_UNSUPPORTED,  -1,                   TYPE_GC_NONE,  0)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_FNPTR,          TARGET_POINTER_SIZE,  TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_OBJECT,         TARGET_POINTER_SIZE,  TYPE_GC_REF,   1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_SZARRAY,        TARGET_POINTER_SIZE,  TYPE_GC_REF,   1)
+
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_MVAR,           -1,                   TYPE_GC_OTHER, 1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CMOD_REQD,      -1,                   TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_CMOD_OPT,       -1,                   TYPE_GC_NONE,  1)
+DEFINEELEMENTTYPEINFO(ELEMENT_TYPE_INTERNAL,       -1,                   TYPE_GC_NONE,  0)
 };
 
 unsigned GetSizeForCorElementType(CorElementType etyp)