Author: raja
Date: 2007-03-26 08:12:30 -0500 (Mon, 26 Mar 2007)
New Revision: 74978

Modified:
   trunk/mcs/mcs/ChangeLog
   trunk/mcs/mcs/flowanalysis.cs
Log:
* flowanalysis.cs (FlowBranching.Reachability): Use a boolean
instead of TriState.  Remove all mention of TriState.


Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2007-03-26 12:59:46 UTC (rev 74977)
+++ trunk/mcs/mcs/ChangeLog     2007-03-26 13:12:30 UTC (rev 74978)
@@ -1,5 +1,8 @@
 2007-03-26  Raja R Harinath  <[EMAIL PROTECTED]>
 
+       * flowanalysis.cs (FlowBranching.Reachability): Use a boolean
+       instead of TriState.  Remove all mention of TriState.
+
        * flowanalysis.cs (FlowBranching.Reachability): Prepare to be
        replaced by a boolean.  Add boolean 'is_unreachable' field, check
        and maintain invariants.

Modified: trunk/mcs/mcs/flowanalysis.cs
===================================================================
--- trunk/mcs/mcs/flowanalysis.cs       2007-03-26 12:59:46 UTC (rev 74977)
+++ trunk/mcs/mcs/flowanalysis.cs       2007-03-26 13:12:30 UTC (rev 74978)
@@ -69,91 +69,45 @@
 
                public sealed class Reachability
                {
-                       public enum TriState : byte {
-                               // Never < Sometimes < Always
-                               Never,
-                               Sometimes,
-                               Always
-                       }
-
                        bool is_unreachable;
-                       TriState barrier;
 
-                       Reachability (TriState barrier)
+                       Reachability (bool is_unreachable)
                        {
-                               this.barrier = barrier;
-                               this.is_unreachable = barrier == 
TriState.Always;
+                               this.is_unreachable = is_unreachable;
                        }
 
-                       void Check ()
-                       {
-                               if (is_unreachable != (barrier == 
TriState.Always))
-                                       throw new InternalErrorException 
(is_unreachable + " vs. " + barrier);
-                       }
-
                        public Reachability Clone ()
                        {
-                               return new Reachability (barrier);
+                               return new Reachability (is_unreachable);
                        }
 
-                       static TriState TriState_Meet (TriState a, TriState b)
-                       {
-                               // (1) if both are Never, return Never
-                               // (2) if both are Always, return Always
-                               // (3) otherwise, return Sometimes
-                               // note that (3) => (3') if both are Sometimes, 
return Sometimes
-                               return a == b ? a : TriState.Sometimes;
-                       }
-
-                       static TriState TriState_Max (TriState a, TriState b)
-                       {
-                               return ((byte) a > (byte) b) ? a : b;
-                       }
-
                        public void Meet (Reachability b)
                        {
-                               barrier = TriState_Meet (barrier, b.barrier);
                                is_unreachable &= b.is_unreachable;
-                               Check ();
                        }
 
                        public void Or (Reachability b)
                        {
-                               barrier = TriState_Max (barrier, b.barrier);
                                is_unreachable |= b.is_unreachable;
-                               Check ();
                        }
 
                        public static Reachability Always ()
                        {
-                               return new Reachability (TriState.Never);
+                               return new Reachability (false);
                        }
 
                        public bool IsUnreachable {
-                               get { Check (); return is_unreachable; }
+                               get { return is_unreachable; }
                        }
 
                        public void SetBarrier ()
                        {
-                               barrier = TriState.Always;
                                is_unreachable = true;
                        }
 
-                       static string ShortName (TriState t)
-                       {
-                               switch (t) {
-                               case TriState.Never:
-                                       return "N";
-                               case TriState.Sometimes:
-                                       return "S";
-                               default:
-                                       return "A";
-                               }
-                       }
-
                        public override string ToString ()
                        {
-                               return String.Format ("[{0}]", ShortName 
(barrier));
+                               return is_unreachable ? "#" : "-";
                        }
                }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to