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

github.com/mono/ikvm-fork.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2015-01-30 13:14:27 +0300
committerMike Krüger <mkrueger@xamarin.com>2015-01-30 13:14:27 +0300
commita3b4c591e3150148f31b21bf5ab252b0c7467de9 (patch)
tree5b6a5eda28fd03ce2e1ad153267c13eb1e8e7f54 /reflect
parent7e0b99936bf92502f7f63d43865cbbe771d3873b (diff)
Reapply SupressReferenceTypeIdentityConversion flag.
Diffstat (limited to 'reflect')
-rw-r--r--reflect/Type.cs2
-rw-r--r--reflect/Universe.cs6
2 files changed, 8 insertions, 0 deletions
diff --git a/reflect/Type.cs b/reflect/Type.cs
index 66606c12..de4f534f 100644
--- a/reflect/Type.cs
+++ b/reflect/Type.cs
@@ -2662,6 +2662,8 @@ namespace IKVM.Reflection
internal static Type Make(Type type, Type[] typeArguments, CustomModifiers[] mods)
{
+ if (type.Universe.SupressReferenceTypeIdentityConversion)
+ return type.Universe.CanonicalizeType(new GenericTypeInstance(type, typeArguments, mods));
bool identity = true;
if (type is TypeBuilder || type is BakedType || type.__IsMissing)
{
diff --git a/reflect/Universe.cs b/reflect/Universe.cs
index 26fb558e..09f3655a 100644
--- a/reflect/Universe.cs
+++ b/reflect/Universe.cs
@@ -129,6 +129,7 @@ namespace IKVM.Reflection
ResolveMissingMembers = 32,
DisableWindowsRuntimeProjection = 64,
DecodeVersionInfoAttributeBlobs = 128,
+ SupressReferenceTypeIdentityConversion = 1 << 20
}
public sealed class Universe : IDisposable
@@ -1222,5 +1223,10 @@ namespace IKVM.Reflection
{
get { return (options & UniverseOptions.DecodeVersionInfoAttributeBlobs) != 0; }
}
+
+ internal bool SupressReferenceTypeIdentityConversion
+ {
+ get { return (options & UniverseOptions.SupressReferenceTypeIdentityConversion) != 0; }
+ }
}
}