Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Strehovský <michals@microsoft.com>2015-12-16 00:29:52 +0300
committerMichal Strehovský <michals@microsoft.com>2015-12-16 00:45:34 +0300
commite328a377ba6d49d1e7d89dfb43ad37efe32f5d7e (patch)
treed5a13e228ac85b82caef62933705a73be24fe074 /src/ILCompiler.Compiler
parenta55a1d6136bccca166efc4f7a10bba7e49438e03 (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.cs4
-rw-r--r--src/ILCompiler.Compiler/src/CppCodeGen/ILToCppImporter.cs14
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();