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ý <MichalStrehovsky@users.noreply.github.com>2016-04-12 19:34:28 +0300
committerMichal Strehovský <MichalStrehovsky@users.noreply.github.com>2016-04-12 19:34:28 +0300
commit1c5153af484d602ae055f5e61f380edae8ebb7b3 (patch)
tree691b806ae06dbe180f5a31a98310e99f9b58ad7e /src/ILCompiler.MetadataTransform
parentd95a6d9556152c81056e7f469228fe3216888b98 (diff)
parent063abe6178137349af215bc897e655b621393d9a (diff)
Merge pull request #1122 from dotnet-bot/from-tfs
Merge changes from TFS
Diffstat (limited to 'src/ILCompiler.MetadataTransform')
-rw-r--r--src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs4
-rw-r--r--src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs16
2 files changed, 14 insertions, 6 deletions
diff --git a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs
index 42babf71b..799862f59 100644
--- a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs
+++ b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/MetadataTransform.cs
@@ -64,8 +64,8 @@ namespace ILCompiler.Metadata
public abstract MetadataRecord HandleQualifiedMethod(Cts.MethodDesc method);
/// <summary>
- /// Retrieves an existing <see cref="FieldReference"/> record representing specified field
- /// in the metadata writer object model, or creates a new one.
+ /// Retrieves an existing <see cref="QualifiedField"> or a <see cref="FieldReference"/> record
+ /// representing specified field in the metadata writer object model, or creates a new one.
/// </summary>
public abstract MetadataRecord HandleQualifiedField(Cts.FieldDesc field);
diff --git a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs
index 908505a56..e82034211 100644
--- a/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs
+++ b/src/ILCompiler.MetadataTransform/src/ILCompiler/Metadata/Transform.Field.cs
@@ -25,7 +25,17 @@ namespace ILCompiler.Metadata
public override MetadataRecord HandleQualifiedField(Cts.FieldDesc field)
{
- return HandleFieldReference(field);
+ if (_policy.GeneratesMetadata(field) && field.GetTypicalFieldDefinition() == field)
+ {
+ QualifiedField record = new QualifiedField();
+ record.Field = HandleFieldDefinition(field);
+ record.EnclosingType = (TypeDefinition)HandleType(field.OwningType);
+ return record;
+ }
+ else
+ {
+ return HandleFieldReference(field);
+ }
}
private Field HandleFieldDefinition(Cts.FieldDesc field)
@@ -68,8 +78,6 @@ namespace ILCompiler.Metadata
private MemberReference HandleFieldReference(Cts.FieldDesc field)
{
- Debug.Assert(field.GetTypicalFieldDefinition() == field);
- Debug.Assert(!_policy.GeneratesMetadata(field));
return (MemberReference)_fields.GetOrCreate(field, _initFieldRef ?? (_initFieldRef = InitializeFieldReference));
}
@@ -79,7 +87,7 @@ namespace ILCompiler.Metadata
record.Parent = HandleType(entity.OwningType);
record.Signature = new FieldSignature
{
- Type = HandleType(entity.FieldType),
+ Type = HandleType(entity.GetTypicalFieldDefinition().FieldType),
// TODO: CustomModifiers
};
}