void WriteVTableFixups(LineWriter lw)
{
int ptrsize = GetPointerSize();
VTableFixups[] fixups = GetVTableFixups();
if (fixups.Length != 0)
{
for (int i = 0; i < fixups.Length; i++)
{
lw.Write(".vtfixup [{0}] {1}{2} at D_{3:X8} //",
fixups[i].Count,
(fixups[i].Type & COR_VTABLE_32BIT) != 0 ? "int32" : "int64",
(fixups[i].Type & COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN) != 0
? " retainappdomain"
: (fixups[i].Type & COR_VTABLE_FROM_UNMANAGED) != 0
? " fromunmanaged"
: "",
fixups[i].RVA);
foreach (var method in GetVTableMethods(fixups[i]))
{
if (ptrsize == 4)
{
lw.Write(" {0:X8}", method.MetadataToken);
}
else
{
lw.Write(" {0:X16}", method.MetadataToken);
}
}
lw.WriteLine();
}
}
}