mType = HNDTYPE_DEPENDENT;
else if (_stricmp(type, "WeakWinRT") == 0)
mType = HNDTYPE_WEAK_WINRT;
+ else if (_stricmp(type, "WeakInteriorPointer") == 0)
+ mType = HNDTYPE_WEAK_INTERIOR_POINTER;
else
sos::Throw<sos::Exception>("Unknown handle type '%s'.", type.GetPtr());
}
type = "WeakWinRT";
if (pStats) pStats->weakWinRTHandleCount++;
break;
+ case HNDTYPE_WEAK_INTERIOR_POINTER:
+ type = "WeakInteriorPointer";
+ if (pStats) pStats->weakInteriorPointerHandleCount++;
+ break;
default:
DebugBreak();
type = "Unknown";
mOut.WriteRow(data[i].Handle, type, ObjectPtr(objAddr), Decimal(size), ObjectPtr(data[i].Secondary), mtName);
else if (data[i].Type == HNDTYPE_WEAK_WINRT)
mOut.WriteRow(data[i].Handle, type, ObjectPtr(objAddr), Decimal(size), Pointer(data[i].Secondary), mtName);
+ else if (data[i].Type == HNDTYPE_WEAK_INTERIOR_POINTER)
+ mOut.WriteRow(data[i].Handle, type, ObjectPtr(objAddr), Decimal(size), Pointer(data[i].Secondary), mtName);
else
mOut.WriteRow(data[i].Handle, type, ObjectPtr(objAddr), Decimal(size), "", mtName);
}
PrintHandleRow("Weak Long Handles:", pStats->weakLongHandleCount);
PrintHandleRow("Weak Short Handles:", pStats->weakShortHandleCount);
PrintHandleRow("Weak WinRT Handles:", pStats->weakWinRTHandleCount);
+ PrintHandleRow("Weak Interior Pointer Handles:", pStats->weakInteriorPointerHandleCount);
PrintHandleRow("Variable Handles:", pStats->variableCount);
PrintHandleRow("SizedRef Handles:", pStats->sizedRefCount);
PrintHandleRow("Dependent Handles:", pStats->dependentCount);
#define HNDTYPE_ASYNCPINNED (7)
#define HNDTYPE_SIZEDREF (8)
#define HNDTYPE_WEAK_WINRT (9)
+#define HNDTYPE_WEAK_INTERIOR_POINTER (10)
+
class BaseObject
{
DWORD sizedRefCount;
DWORD dependentCount;
DWORD weakWinRTHandleCount;
+ DWORD weakInteriorPointerHandleCount;
DWORD unknownHandleCount;
GCHandleStatistics()
: strongHandleCount(0), pinnedHandleCount(0), asyncPinnedHandleCount(0), refCntHandleCount(0),
weakLongHandleCount(0), weakShortHandleCount(0), variableCount(0), sizedRefCount(0),
- dependentCount(0), weakWinRTHandleCount(0), unknownHandleCount(0)
+ dependentCount(0), weakWinRTHandleCount(0), weakInteriorPointerHandleCount(0), unknownHandleCount(0)
{}
~GCHandleStatistics()
{