Fixes for bug#54388 "InternalsVisibleTo is case sensitive" * Fix the JIT so that...
[mono.git] / mcs / mcs / flowanalysis.cs
index b9189c1f3d6d8aa31ef785065331a78c969c275b..267879c043b75ef8dc40f3df4f150503cd69317c 100644 (file)
@@ -552,7 +552,7 @@ namespace Mono.CSharp
 
                public static DefiniteAssignmentBitSet operator & (DefiniteAssignmentBitSet a, DefiniteAssignmentBitSet b)
                {
-                       if (AreEqual (a, b))
+                       if (IsEqual (a, b))
                                return a;
 
                        DefiniteAssignmentBitSet res;
@@ -575,7 +575,7 @@ namespace Mono.CSharp
 
                public static DefiniteAssignmentBitSet operator | (DefiniteAssignmentBitSet a, DefiniteAssignmentBitSet b)
                {
-                       if (AreEqual (a, b))
+                       if (IsEqual (a, b))
                                return a;
 
                        DefiniteAssignmentBitSet res;
@@ -678,7 +678,7 @@ namespace Mono.CSharp
                                large_bits[index >> 5] |= (1 << (index & 31));
                }
 
-               public static bool AreEqual (DefiniteAssignmentBitSet a, DefiniteAssignmentBitSet b)
+               static bool IsEqual (DefiniteAssignmentBitSet a, DefiniteAssignmentBitSet b)
                {
                        if (a.large_bits == null)
                                return (a.bits & ~copy_on_write_flag) == (b.bits & ~copy_on_write_flag);
@@ -690,5 +690,20 @@ namespace Mono.CSharp
 
                        return true;
                }
+
+               public static bool IsIncluded (DefiniteAssignmentBitSet set, DefiniteAssignmentBitSet test)
+               {
+                       var set_bits = set.large_bits;
+                       if (set_bits == null)
+                               return (set.bits & test.bits & ~copy_on_write_flag) == (set.bits & ~copy_on_write_flag);
+
+                       var test_bits = test.large_bits;
+                       for (int i = 0; i < set_bits.Length; ++i) {
+                               if ((set_bits[i] & test_bits[i]) != set_bits[i])
+                                       return false;
+                       }
+
+                       return true;
+               }
        }
 }