Remove support to store IsolationNode objects in flyweights

There is not an easy approach to comparing two isolation nodes without a
detailed comparison of the node's capture registers, rules, and child
nodes. This would be an expensive comparison. Instead, the isolation
nodes will be managed by the containing isolation chip objects.

Change-Id: Ia0171d752bc2efc912feaaa0ed387a3b4a24a881
Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
diff --git a/src/isolator/hei_isolation_node.hpp b/src/isolator/hei_isolation_node.hpp
index 8d7cfac..4fc5927 100644
--- a/src/isolator/hei_isolation_node.hpp
+++ b/src/isolator/hei_isolation_node.hpp
@@ -30,6 +30,12 @@
  * objects to define rules like "REG & ~MASK & CNFG", which reads "return all
  * bits in REG that are not in MASK and set in CNFG". See the definition of the
  * Register class for details on how this works.
+ *
+ * This class cannot be added to the flyweights. There is no way to easily
+ * distinguish differences between nodes on different chips without comparing
+ * all of the capture registers, rules, and child nodes. Instead, the shared
+ * pointers will be stored in the isolation chip, which will ensure there isn't
+ * an attempt to add two nodes with the same ID and instance.
  */
 class IsolationNode
 {
@@ -134,28 +140,6 @@
         return iv_instance;
     }
 
-  public: // Operators
-    /** @brief Equals operator. */
-    bool operator==(const IsolationNode& i_r) const
-    {
-        return (iv_id == i_r.iv_id) && (iv_instance == i_r.iv_instance);
-    }
-
-    /** @brief Less than operator. */
-    bool operator<(const IsolationNode& i_r) const
-    {
-        if (iv_id < i_r.iv_id)
-        {
-            return true;
-        }
-        else if (iv_id == i_r.iv_id)
-        {
-            return (iv_instance < i_r.iv_instance);
-        }
-
-        return false;
-    }
-
   private: // Isolation stack and supporting functions.
     /** When analyze() is called at the tree root, all recursive calls to
      *  analyze() will target the same chip and attention type. So we only need
diff --git a/src/isolator/hei_isolator.cpp b/src/isolator/hei_isolator.cpp
index e4266b0..3488ab9 100644
--- a/src/isolator/hei_isolator.cpp
+++ b/src/isolator/hei_isolator.cpp
@@ -32,13 +32,9 @@
 
 void Isolator::uninitialize()
 {
-    // Clear all of the IsolationChip objects.
+    // Clear all of the isolation objects.
     iv_isoChips.clear();
 
-    // Remove all of the IsolationNode objects stored in the flyweights. This
-    // must be done before removing the HardwareRegister objects
-    Flyweight<const IsolationNode>::getSingleton().clear();
-
     // Must flush the hardware register cache before deleting any
     // HardwareRegister objects.
     HardwareRegister::flushAll();