[Webkit-unassigned] [Bug 67823] [NRWT] Provides a simple LRU cache class in Python.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Sep 14 22:04:13 PDT 2011


https://bugs.webkit.org/show_bug.cgi?id=67823





--- Comment #5 from Hayato Ito <hayato at chromium.org>  2011-09-14 22:04:14 PST ---
(From update of attachment 107322)
Thank you! The patch looks good!
I think there are still some corner cases we must handle carefully.

View in context: https://bugs.webkit.org/attachment.cgi?id=107322&action=review

> Tools/Scripts/webkitpy/common/lru_cache.py:39
> +        size: a cache memory size

'capacity' might be a better name than 'size' in this context.

> Tools/Scripts/webkitpy/common/lru_cache.py:42
> +        assert size > 0, "You should set the LRUCache size to not less than zero."

You might want to include the actual value of |capacity| in the assertion message.
like:
  assert capacity > 0, "capacity (%s) must be greater than zero." % capacity

> Tools/Scripts/webkitpy/common/lru_cache.py:43
> +        self.first = None

if you don't want to expose |first| and |last|, that should be named like |_first| and |_last|.

> Tools/Scripts/webkitpy/common/lru_cache.py:49
> +        if self.first == None:

I think 
  if not self.first:
is more pythonic than
  if self.first == None:

At least it should be 'self.first is None' instead of 'self.first == None'.

> Tools/Scripts/webkitpy/common/lru_cache.py:65
> +        node = Node(key, value, self.first)

When _one_node is called, self.first is always None, isn't it?
Therefore this should be:
  node = Node(key, value, None)

> Tools/Scripts/webkitpy/common/lru_cache.py:71
> +        if self.first.key == key:

If self.first is None, this will fail.

> Tools/Scripts/webkitpy/common/lru_cache.py:99
> +            self.first = node.prev

If LRUCache contains one item, (k, v) and del[k] is called, it seems self.first will become 'None' here. So the following self.first.next will fail. Could you add a testcase for this?

And if self.first and self.last point to the same node, it seems we also have to set self.last = None here.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list