}
void MethodContext::dmpGetClassAttribs(DWORDLONG key, DWORD value)
{
- printf("GetClassAttribs key %016llX, value %u", key, value);
+ printf("GetClassAttribs key %016llX, value %08X (%s)", key, value, SpmiDumpHelper::DumpCorInfoFlag((CorInfoFlag)value).c_str());
}
DWORD MethodContext::repGetClassAttribs(CORINFO_CLASS_HANDLE classHandle)
{
}
void MethodContext::dmpGetMethodAttribs(DWORDLONG key, DWORD value)
{
- printf("GetMethodAttribs key %016llX, value %u", key, value);
+ printf("GetMethodAttribs key %016llX, value %08X (%s)", key, value, SpmiDumpHelper::DumpCorInfoFlag((CorInfoFlag)value).c_str());
}
DWORD MethodContext::repGetMethodAttribs(CORINFO_METHOD_HANDLE methodHandle)
{
void MethodContext::dmpGetMethodNameFromMetadata(Agnostic_CORINFO_METHODNAME_TOKENin key, Agnostic_CORINFO_METHODNAME_TOKENout value)
{
- unsigned char* methodName = (unsigned char*)GetMethodName->GetBuffer(value.methodName);
- unsigned char* className = (unsigned char*)GetMethodName->GetBuffer(value.className);
- unsigned char* namespaceName = (unsigned char*)GetMethodName->GetBuffer(value.namespaceName);
- unsigned char* enclosingClassName = (unsigned char*)GetMethodName->GetBuffer(value.enclosingClassName);
- printf("GetMethodNameFromMetadata key - ftn-%016llX classNonNull-%u namespaceNonNull-%u nclosingClassNonNull-%u, value meth-'%s', "
+ unsigned char* methodName = (unsigned char*)GetMethodNameFromMetadata->GetBuffer(value.methodName);
+ unsigned char* className = (unsigned char*)GetMethodNameFromMetadata->GetBuffer(value.className);
+ unsigned char* namespaceName = (unsigned char*)GetMethodNameFromMetadata->GetBuffer(value.namespaceName);
+ unsigned char* enclosingClassName = (unsigned char*)GetMethodNameFromMetadata->GetBuffer(value.enclosingClassName);
+ printf("GetMethodNameFromMetadata key - ftn-%016llX classNonNull-%u namespaceNonNull-%u enclosingClassNonNull-%u, value meth-'%s', "
"class-'%s', namespace-'%s' enclosingClass-'%s'",
key.ftn, key.className, key.namespaceName, key.enclosingClassName, methodName, className, namespaceName, enclosingClassName);
GetMethodNameFromMetadata->Unlock();
" ipl{at-%08X hnd-%016llX}"
" sdi-%08X"
" excp-%08X"
- "stubLookup%s",
+ " stubLookup{%s}",
value.hMethod, value.methodFlags, value.classFlags,
SpmiDumpHelper::DumpAgnostic_CORINFO_SIG_INFO(value.sig).c_str(),
SpmiDumpHelper::DumpAgnostic_CORINFO_SIG_INFO(value.verSig).c_str(), value.instParamLookup.accessType,
const MethodContext::Agnostic_CORINFO_CONST_LOOKUP& constLookup)
{
char buffer[MAX_BUFFER_SIZE];
- sprintf_s(buffer, MAX_BUFFER_SIZE, "at - %u handle/address-%016llX", constLookup.accessType, constLookup.handle);
+ sprintf_s(buffer, MAX_BUFFER_SIZE, "at-%u handle/address-%016llX", constLookup.accessType, constLookup.handle);
return std::string(buffer);
}
sigInfo.token);
return std::string(buffer);
}
+
+std::string SpmiDumpHelper::DumpCorInfoFlag(CorInfoFlag flags)
+{
+ std::string s("");
+
+#define AddFlag(__name)\
+ if (flags & __name) { s += std::string(" ") + std::string(#__name); flags = (CorInfoFlag)((DWORD)flags & ~(DWORD)__name); }
+
+ AddFlag(CORINFO_FLG_PROTECTED);
+ AddFlag(CORINFO_FLG_STATIC);
+ AddFlag(CORINFO_FLG_FINAL);
+ AddFlag(CORINFO_FLG_SYNCH);
+ AddFlag(CORINFO_FLG_VIRTUAL);
+ AddFlag(CORINFO_FLG_NATIVE);
+ AddFlag(CORINFO_FLG_INTRINSIC_TYPE);
+ AddFlag(CORINFO_FLG_ABSTRACT);
+ AddFlag(CORINFO_FLG_EnC);
+ AddFlag(CORINFO_FLG_FORCEINLINE);
+ AddFlag(CORINFO_FLG_SHAREDINST);
+ AddFlag(CORINFO_FLG_DELEGATE_INVOKE);
+ AddFlag(CORINFO_FLG_PINVOKE);
+ AddFlag(CORINFO_FLG_SECURITYCHECK);
+ AddFlag(CORINFO_FLG_NOGCCHECK);
+ AddFlag(CORINFO_FLG_INTRINSIC);
+ AddFlag(CORINFO_FLG_CONSTRUCTOR);
+ AddFlag(CORINFO_FLG_AGGRESSIVE_OPT);
+ AddFlag(CORINFO_FLG_DISABLE_TIER0_FOR_LOOPS);
+ AddFlag(CORINFO_FLG_NOSECURITYWRAP);
+ AddFlag(CORINFO_FLG_DONT_INLINE);
+ AddFlag(CORINFO_FLG_DONT_INLINE_CALLER);
+ AddFlag(CORINFO_FLG_JIT_INTRINSIC);
+ AddFlag(CORINFO_FLG_VALUECLASS);
+ AddFlag(CORINFO_FLG_VAROBJSIZE);
+ AddFlag(CORINFO_FLG_ARRAY);
+ AddFlag(CORINFO_FLG_OVERLAPPING_FIELDS);
+ AddFlag(CORINFO_FLG_INTERFACE);
+ AddFlag(CORINFO_FLG_CONTEXTFUL);
+ AddFlag(CORINFO_FLG_CUSTOMLAYOUT);
+ AddFlag(CORINFO_FLG_CONTAINS_GC_PTR);
+ AddFlag(CORINFO_FLG_DELEGATE);
+ AddFlag(CORINFO_FLG_MARSHAL_BYREF);
+ AddFlag(CORINFO_FLG_CONTAINS_STACK_PTR);
+ AddFlag(CORINFO_FLG_VARIANCE);
+ AddFlag(CORINFO_FLG_BEFOREFIELDINIT);
+ AddFlag(CORINFO_FLG_GENERIC_TYPE_VARIABLE);
+ AddFlag(CORINFO_FLG_UNSAFE_VALUECLASS);
+
+#undef AddFlag
+
+ if (flags != 0)
+ {
+ char buffer[MAX_BUFFER_SIZE];
+ sprintf_s(buffer, MAX_BUFFER_SIZE, " Unknown flags-%08X", flags);
+ s += std::string(buffer);
+ }
+
+ return s;
+}