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 -~----------~----~----~----~------~----~------~--~---
