Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Commit

Permalink
Use TARGET_POINTER_SIZE macro (#16640)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
echesakov authored and jkotas committed Mar 3, 2018
1 parent fa7465f commit fef908b
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 86 deletions.
4 changes: 4 additions & 0 deletions src/ToolBox/SOS/Strike/util.h
Expand Up @@ -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
Expand Down
82 changes: 41 additions & 41 deletions src/inc/cortypeinfo.h
Expand Up @@ -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
90 changes: 45 additions & 45 deletions src/vm/siginfo.cpp
Expand Up @@ -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)
Expand Down

0 comments on commit fef908b

Please sign in to comment.