Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,8 @@ private ClrDataValue CreateValueFromDebugInfo(
return null;
}

mdReader = _target.Contracts.EcmaMetadata.GetMetadata(moduleHandle)!;
mdReader = _target.Contracts.EcmaMetadata.GetMetadata(moduleHandle)
?? throw new InvalidOperationException("Module has no metadata.");
StandaloneSignatureHandle localSigHandle = MetadataTokens.StandaloneSignatureHandle(localToken);
BlobHandle localSigBlob = mdReader.GetStandaloneSignature(localSigHandle).Signature;
return mdReader.GetBlobReader(localSigBlob);
Expand Down Expand Up @@ -789,7 +790,8 @@ private static (uint Flags, int Size) CheckEnumFromTypeDef(MetadataReader reader
{
// For TypeRefs, try to resolve in the same module's TypeDef table.
TypeReference typeRef = reader.GetTypeReference(handle);
MetadataReader moduleReader = _target.Contracts.EcmaMetadata.GetMetadata(_moduleHandle)!;
MetadataReader moduleReader = _target.Contracts.EcmaMetadata.GetMetadata(_moduleHandle)
?? throw Marshal.GetExceptionForHR(HResults.E_FAIL)!;
Comment on lines +793 to +794
foreach (TypeDefinitionHandle tdh in moduleReader.TypeDefinitions)
{
TypeDefinition td = moduleReader.GetTypeDefinition(tdh);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,8 @@ int IXCLRDataModule.StartEnumMethodDefinitionsByName(char* name, uint flags, ulo
// start: find the type.
ILoader loader = _target.Contracts.Loader;
Contracts.ModuleHandle moduleHandle = loader.GetModuleHandleFromModulePtr(_address);
MetadataReader reader = _target.Contracts.EcmaMetadata.GetMetadata(moduleHandle)!;
MetadataReader reader = _target.Contracts.EcmaMetadata.GetMetadata(moduleHandle)
?? throw new InvalidOperationException("Module has no metadata.");

EnumMethodDefinitions emd = new(reader, flags, (nuint)handleLocal);
Comment on lines 300 to 304
emd.Start(fullName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4770,7 +4770,8 @@ public int GetObjectFields(ulong id, uint celt, COR_FIELD* layout, uint* pceltFe
TypeHandle enclosingTypeHandle = rts.GetTypeHandle(enclosingMT);
TargetPointer enclosingModulePtr = rts.GetModule(enclosingTypeHandle);
Contracts.ModuleHandle enclosingModuleHandle = _target.Contracts.Loader.GetModuleHandleFromModulePtr(enclosingModulePtr);
MetadataReader enclosingMdReader = ecmaMetadataContract.GetMetadata(enclosingModuleHandle)!;
MetadataReader enclosingMdReader = ecmaMetadataContract.GetMetadata(enclosingModuleHandle)
?? throw new InvalidOperationException("Module has no metadata.");
FieldDefinitionHandle fieldDefHandle = (FieldDefinitionHandle)MetadataTokens.Handle((int)memberDef);
FieldDefinition fieldDef = enclosingMdReader.GetFieldDefinition(fieldDefHandle);
Comment on lines +4773 to 4776

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1070,7 +1070,8 @@ int ISOSDacInterface.GetFieldDescData(ClrDataAddress fieldDesc, DacpFieldDescDat
TypeHandle ctx = rtsContract.GetTypeHandle(enclosingMT);
TargetPointer modulePtr = rtsContract.GetModule(ctx);
Contracts.ModuleHandle moduleHandle = _target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePtr);
MetadataReader mdReader = ecmaMetadataContract.GetMetadata(moduleHandle)!;
MetadataReader mdReader = ecmaMetadataContract.GetMetadata(moduleHandle)
?? throw new InvalidOperationException("Module has no metadata.");
FieldDefinition fieldDef = mdReader.GetFieldDefinition(fieldHandle);

TypeHandle foundTypeHandle = rtsContract.GetFieldDescApproxTypeHandle(fieldDescTargetPtr);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ private static unsafe void AddTypeString(Target target,
uint typeDefToken = runtimeTypeSystem.GetTypeDefToken(th);
TargetPointer modulePointer = target.Contracts.RuntimeTypeSystem.GetModule(th);
Contracts.ModuleHandle module = target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePointer);
MetadataReader internalTypeMetadata = target.Contracts.EcmaMetadata.GetMetadata(module)!;
MetadataReader internalTypeMetadata = target.Contracts.EcmaMetadata.GetMetadata(module)
?? throw new InvalidOperationException("Module has no metadata.");

TypeDefinition internalTypeDef = internalTypeMetadata.GetTypeDefinition((TypeDefinitionHandle)MetadataTokens.Handle((int)typeDefToken));
_namespace = internalTypeMetadata.GetString(internalTypeDef.Namespace);
Expand Down Expand Up @@ -346,7 +347,8 @@ private static void AddType(Target target, StringBuilder stringBuilder, TypeHand
uint typeDefToken = runtimeTypeSystem.GetTypeDefToken(typeHandle);
TargetPointer modulePointer = target.Contracts.RuntimeTypeSystem.GetModule(typeHandle);
Contracts.ModuleHandle module = target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePointer);
MetadataReader metadata = target.Contracts.EcmaMetadata.GetMetadata(module)!;
MetadataReader metadata = target.Contracts.EcmaMetadata.GetMetadata(module)
?? throw new InvalidOperationException("Module has no metadata.");
TypeDefinition typeDef = metadata.GetTypeDefinition((TypeDefinitionHandle)MetadataTokens.Handle((int)typeDefToken));
string _namespace = metadata.GetString(typeDef.Namespace);
string name = metadata.GetString(typeDef.Name);
Expand Down Expand Up @@ -391,7 +393,8 @@ private static void AddType(Target target, StringBuilder stringBuilder, TypeHand
case CorElementType.Var:
runtimeTypeSystem.IsGenericVariable(typeHandle, out TargetPointer genericVariableModulePointer, out uint typeVarToken);
Contracts.ModuleHandle genericVariableModule = target.Contracts.Loader.GetModuleHandleFromModulePtr(genericVariableModulePointer);
MetadataReader generatedVariableMetadata = target.Contracts.EcmaMetadata.GetMetadata(genericVariableModule)!;
MetadataReader generatedVariableMetadata = target.Contracts.EcmaMetadata.GetMetadata(genericVariableModule)
?? throw new InvalidOperationException("Module has no metadata.");
GenericParameter genericVariable = generatedVariableMetadata.GetGenericParameter((GenericParameterHandle)MetadataTokens.Handle((int)typeVarToken));
stringBuilder.Append(generatedVariableMetadata.GetString(genericVariable.Name));
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ public static void AppendMethodImpl(Target target, StringBuilder stringBuilder,
if (rowId != 0)
{
Contracts.ModuleHandle module = loader.GetModuleHandleFromModulePtr(runtimeTypeSystem.GetModule(th));
MetadataReader reader = target.Contracts.EcmaMetadata.GetMetadata(module)!;
MetadataReader reader = target.Contracts.EcmaMetadata.GetMetadata(module)
?? throw new InvalidOperationException("Module has no metadata.");
MethodDefinition methodDef = reader.GetMethodDefinition(MetadataTokens.MethodDefinitionHandle((int)rowId));
stringBuilder.Append(reader.GetString(methodDef.Name));
Comment on lines 125 to 129
Comment on lines 125 to 129
}
Expand Down Expand Up @@ -224,7 +225,8 @@ private static void AppendTypeCore(ref TypeNameBuilder tnb, Contracts.TypeHandle
else if (typeSystemContract.IsGenericVariable(typeHandle, out TargetPointer modulePointer, out uint genericParamToken))
{
Contracts.ModuleHandle module = tnb.Target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePointer);
MetadataReader reader = tnb.Target.Contracts.EcmaMetadata.GetMetadata(module)!;
MetadataReader reader = tnb.Target.Contracts.EcmaMetadata.GetMetadata(module)
?? throw new InvalidOperationException("Module has no metadata.");
var handle = (GenericParameterHandle)MetadataTokens.Handle((int)genericParamToken);
GenericParameter genericParam = reader.GetGenericParameter(handle);
if (format.HasFlag(TypeNameFormat.FormatGenericParam))
Expand Down Expand Up @@ -291,7 +293,8 @@ private static void AppendTypeCore(ref TypeNameBuilder tnb, Contracts.TypeHandle
}
else
{
MetadataReader reader = tnb.Target.Contracts.EcmaMetadata.GetMetadata(moduleHandle)!;
MetadataReader reader = tnb.Target.Contracts.EcmaMetadata.GetMetadata(moduleHandle)
?? throw new InvalidOperationException("Module has no metadata.");
AppendNestedTypeDef(ref tnb, reader, (TypeDefinitionHandle)MetadataTokens.EntityHandle((int)typeDefToken), format);
}

Expand All @@ -318,7 +321,8 @@ private static void AppendTypeCore(ref TypeNameBuilder tnb, Contracts.TypeHandle
Contracts.ModuleHandle module = tnb.Target.Contracts.Loader.GetModuleHandleFromModulePtr(modulePtr);
// NOTE: The DAC variant of assembly name generation is different than the runtime version. The DAC variant is simpler, and only uses SimpleName

MetadataReader mr = tnb.Target.Contracts.EcmaMetadata.GetMetadata(module)!;
MetadataReader mr = tnb.Target.Contracts.EcmaMetadata.GetMetadata(module)
?? throw new InvalidOperationException("Module has no metadata.");
string assemblySimpleName = mr.GetString(mr.GetAssemblyDefinition().Name);

tnb.AddAssemblySpec(assemblySimpleName);
Expand Down
Loading