diff options
author | Michal Strehovský <michals@microsoft.com> | 2015-12-16 00:29:52 +0300 |
---|---|---|
committer | Michal Strehovský <michals@microsoft.com> | 2015-12-16 00:45:34 +0300 |
commit | e328a377ba6d49d1e7d89dfb43ad37efe32f5d7e (patch) | |
tree | d5a13e228ac85b82caef62933705a73be24fe074 /src/ILCompiler.Compiler | |
parent | a55a1d6136bccca166efc4f7a10bba7e49438e03 (diff) |
More type system tweaks
- Add a Module property to MetadataType derivatives
- Add useful stuff to GenericParameterDesc
Diffstat (limited to 'src/ILCompiler.Compiler')
-rw-r--r-- | src/ILCompiler.Compiler/src/Compiler/NameMangler.cs | 4 | ||||
-rw-r--r-- | src/ILCompiler.Compiler/src/CppCodeGen/ILToCppImporter.cs | 14 |
2 files changed, 6 insertions, 12 deletions
diff --git a/src/ILCompiler.Compiler/src/Compiler/NameMangler.cs b/src/ILCompiler.Compiler/src/Compiler/NameMangler.cs index 5b89c8758..dbb68dba7 100644 --- a/src/ILCompiler.Compiler/src/Compiler/NameMangler.cs +++ b/src/ILCompiler.Compiler/src/Compiler/NameMangler.cs @@ -90,7 +90,7 @@ namespace ILCompiler { if (type is EcmaType) { - string prependAssemblyName = SanitizeName(((EcmaType)type).Module.GetName().Name); + string prependAssemblyName = SanitizeName(((EcmaType)type).EcmaModule.GetName().Name); var deduplicator = new HashSet<string>(); @@ -98,7 +98,7 @@ namespace ILCompiler // they are compiled lock (this) { - foreach (MetadataType t in ((EcmaType)type).Module.GetAllTypes()) + foreach (MetadataType t in ((EcmaType)type).EcmaModule.GetAllTypes()) { string name = t.GetFullName(); diff --git a/src/ILCompiler.Compiler/src/CppCodeGen/ILToCppImporter.cs b/src/ILCompiler.Compiler/src/CppCodeGen/ILToCppImporter.cs index 5c8ccb960..f3b5ccdf6 100644 --- a/src/ILCompiler.Compiler/src/CppCodeGen/ILToCppImporter.cs +++ b/src/ILCompiler.Compiler/src/CppCodeGen/ILToCppImporter.cs @@ -639,21 +639,15 @@ namespace Internal.IL var arraySlot = Pop(); var fieldDesc = (TypeSystem.Ecma.EcmaField)fieldSlot.Value.Aux; - int addr = fieldDesc.MetadataReader.GetFieldDefinition(fieldDesc.Handle).GetRelativeVirtualAddress(); - var memBlock = fieldDesc.Module.PEReader.GetSectionData(addr).GetContent(); - - var fieldType = (TypeSystem.Ecma.EcmaType)fieldDesc.FieldType; - int size = fieldType.MetadataReader.GetTypeDefinition(fieldType.Handle).GetLayout().Size; - if (size == 0) - throw new NotImplementedException(); - + var memBlock = TypeSystem.Ecma.EcmaFieldExtensions.GetFieldRvaData(fieldDesc); + // TODO: Need to do more for arches with different endianness? var preinitDataHolder = NewTempName(); Append("static const char "); Append(preinitDataHolder); Append("[] = { "); - for (int i = 0; i < size; i++) + for (int i = 0; i < memBlock.Length; i++) { if (i != 0) Append(", "); @@ -667,7 +661,7 @@ namespace Internal.IL Append(" + ARRAY_BASE, "); Append(preinitDataHolder); Append(", "); - Append(size.ToString()); + Append(memBlock.Length.ToString()); Append(")"); Finish(); |