Reviewers: Mads Ager,

Description:
Introduce splaytree.KeyNotFoundError and use it for reporting
issues when removing non-existing nodes from a SplayTree.

Please review this at http://codereview.chromium.org/42599

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     tools/splaytree.py
   M     tools/tickprocessor.py


Index: tools/splaytree.py
===================================================================
--- tools/splaytree.py  (revision 1606)
+++ tools/splaytree.py  (working copy)
@@ -36,6 +36,13 @@
      self.right = None


+class KeyNotFoundError(Exception):
+  """KeyNotFoundError is raised when removing a non-existing node."""
+
+  def __init__(self, key):
+    self.key = key
+
+
  class SplayTree(object):
    """The splay tree itself is just a reference to the root of the tree."""

@@ -75,12 +82,12 @@
      """Remove the node with the given key from the SplayTree."""
      # Raise exception for key that is not found if the tree is empty.
      if self.IsEmpty():
-      raise Exception('KeyNotFound')
+      raise KeyNotFoundError(key)
      # Splay on the key to move the node with the given key to the top.
      self.Splay(key)
      # Raise exception for key that is not found.
      if self.root.key != key:
-      raise Exception('KeyNotFound')
+      raise KeyNotFoundError(key)
      removed = self.root
      # Link out the root node.
      if not self.root.left:
Index: tools/tickprocessor.py
===================================================================
--- tools/tickprocessor.py      (revision 1604)
+++ tools/tickprocessor.py      (working copy)
@@ -235,14 +235,14 @@
        removed_node = self.js_entries.Remove(from_addr)
        removed_node.value.SetStartAddress(to_addr);
        self.js_entries.Insert(to_addr, removed_node.value)
-    except 'KeyNotFound':
+    except splaytree.KeyNotFoundError:
        print('Code move event for unknown code: 0x%x' % from_addr)

    def ProcessCodeDelete(self, from_addr):
      try:
        removed_node = self.js_entries.Remove(from_addr)
        self.deleted_code.append(removed_node.value)
-    except 'KeyNotFound':
+    except splaytree.KeyNotFoundError:
        print('Code delete event for unknown code: 0x%x' % from_addr)

    def ProcessBeginCodeRegion(self, id, assm, start, name):



--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to