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