Roll src/third_party/WebKit c8d1660:ae3684d (svn 197337:197343)
[chromium-blink-merge.git] / tools / json_schema_compiler / memoize.py
blob228e7e3f82d26d8a23d3557a97b02624c1c73cc3
1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 def memoize(fn):
6 '''Decorates |fn| to memoize.
7 '''
8 memory = {}
9 def impl(*args, **optargs):
10 full_args = args + tuple(optargs.iteritems())
11 if full_args not in memory:
12 memory[full_args] = fn(*args, **optargs)
13 return memory[full_args]
14 return impl