From fef908be21e11f38644b7140f270997c38daba99 Mon Sep 17 00:00:00 2001 From: Egor Chesakov Date: Fri, 2 Mar 2018 16:39:36 -0800 Subject: [PATCH] Use TARGET_POINTER_SIZE macro (#16640) * 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 | 4 ++ src/inc/cortypeinfo.h | 82 +++++++++++++++---------------- src/vm/siginfo.cpp | 90 +++++++++++++++++------------------ 3 files changed, 90 insertions(+), 86 deletions(-) diff --git a/src/ToolBox/SOS/Strike/util.h b/src/ToolBox/SOS/Strike/util.h index a6ca86e84720..7ffba1cee84c 100644 --- a/src/ToolBox/SOS/Strike/util.h +++ b/src/ToolBox/SOS/Strike/util.h @@ -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 diff --git a/src/inc/cortypeinfo.h b/src/inc/cortypeinfo.h index ee75b8f48b7e..8fdfe43c5fa9 100644 --- a/src/inc/cortypeinfo.h +++ b/src/inc/cortypeinfo.h @@ -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 diff --git a/src/vm/siginfo.cpp b/src/vm/siginfo.cpp index fa2600252992..5fe0002cb227 100644 --- a/src/vm/siginfo.cpp +++ b/src/vm/siginfo.cpp @@ -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)