Show optimization tiers for runtime major version >= 3 (including 5) (#785)
authorKoundinya Veluri <kouvel@users.noreply.github.com>
Wed, 29 Jan 2020 20:43:13 +0000 (12:43 -0800)
committerGitHub <noreply@github.com>
Wed, 29 Jan 2020 20:43:13 +0000 (12:43 -0800)
Show optimization tiers for runtime major version >= 3 (including 5)

src/SOS/Strike/util.cpp
src/SOS/Strike/util.h

index 0c6be1383a618f2fc3bf3d9456e9e27f4300aefe..805f2f34bc2ca97e0e824c74985a8e7240563e54 100644 (file)
@@ -2858,7 +2858,7 @@ void DumpTieredNativeCodeAddressInfo(struct DacpTieredVersionData * pTieredVersi
     ExtOut("  ReJIT ID:           %d\n", rejitID);
     DMLOut("  IL Addr:            %s\n", DMLIL(ilAddr));
 
-    if (IsRuntimeVersion(3)) {
+    if (IsRuntimeVersionAtLeast(3)) {
         for(int i = cTieredVersionData - 1; i >= 0; --i)
         {
             const char *descriptor = NULL;
@@ -3345,6 +3345,43 @@ bool IsRuntimeVersion(VS_FIXEDFILEINFO& fileInfo, DWORD major)
     return false;
 }
 
+bool IsRuntimeVersionAtLeast(DWORD major)
+{
+    VS_FIXEDFILEINFO fileInfo;
+    if (GetEEVersion(&fileInfo, nullptr, 0))
+    {
+        return IsRuntimeVersionAtLeast(fileInfo, major);
+    }
+    return false;
+}
+
+bool IsRuntimeVersionAtLeast(VS_FIXEDFILEINFO& fileInfo, DWORD major)
+{
+    switch (major)
+    {
+        case 3:
+            if (HIWORD(fileInfo.dwFileVersionMS) == 4 && LOWORD(fileInfo.dwFileVersionMS) == 700)
+            {
+                return true;
+            }
+            // fall through
+
+        case 5:
+            if (HIWORD(fileInfo.dwFileVersionMS) >= 5)
+            {
+                return true;
+            }
+            // fall through
+
+            break;
+
+        default:
+            _ASSERTE(FALSE);
+            break;
+    }
+    return false;
+}
+
 #ifndef FEATURE_PAL
 
 BOOL GetSOSVersion(VS_FIXEDFILEINFO *pFileInfo)
index 6c2fde13e07c7a1b136541d578415a59ec6969db..7a487cb13bca59388014db2b2f1f5f5c4136335d 100644 (file)
@@ -1550,6 +1550,8 @@ ULONG DisplayILOperation(const UINT indentCount, BYTE* pBuffer, ULONG position,
 BOOL GetEEVersion(VS_FIXEDFILEINFO* pFileInfo, char* fileVersionBuffer, int fileVersionBufferSizeInBytes);
 bool IsRuntimeVersion(DWORD major);
 bool IsRuntimeVersion(VS_FIXEDFILEINFO& fileInfo, DWORD major);
+bool IsRuntimeVersionAtLeast(DWORD major);
+bool IsRuntimeVersionAtLeast(VS_FIXEDFILEINFO& fileInfo, DWORD major);
 #ifndef FEATURE_PAL
 BOOL IsRetailBuild (size_t base);
 BOOL GetSOSVersion(VS_FIXEDFILEINFO *pFileInfo);