[pypy-commit] pypy virtual-arguments: shift dict_unrolling_heuristics to dictmultiobject.py
fijal
noreply at buildbot.pypy.org
Sun Jul 15 19:34:01 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: virtual-arguments
Changeset: r56086:b804a064343c
Date: 2012-07-15 19:33 +0200
http://bitbucket.org/pypy/pypy/changeset/b804a064343c/
Log: shift dict_unrolling_heuristics to dictmultiobject.py
diff --git a/pypy/objspace/std/dictmultiobject.py b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -29,6 +29,18 @@
space.is_w(w_lookup_type, space.w_float)
)
+
+DICT_CUTOFF = 5
+
+ at specialize.call_location()
+def w_dict_unrolling_heuristic(w_dct):
+ """ In which cases iterating over dict items can be unrolled.
+ Note that w_dct is an instance of W_DictMultiObject, not necesarilly
+ an actual dict
+ """
+ return jit.isvirtual(w_dct) or (jit.isconstant(w_dct) and
+ w_dct.length() <= DICT_CUTOFF)
+
class W_DictMultiObject(W_Object):
from pypy.objspace.std.dicttype import dict_typedef as typedef
@@ -512,7 +524,7 @@
return self.space.newlist_str(self.listview_str(w_dict))
@jit.look_inside_iff(lambda self, w_dict:
- jit.w_dict_unrolling_heuristic(w_dict))
+ w_dict_unrolling_heuristic(w_dict))
def view_as_kwargs(self, w_dict):
d = self.unerase(w_dict.dstorage)
l = len(d)
diff --git a/pypy/rlib/jit.py b/pypy/rlib/jit.py
--- a/pypy/rlib/jit.py
+++ b/pypy/rlib/jit.py
@@ -214,17 +214,6 @@
"""
return isvirtual(lst) or (isconstant(size) and size <= LIST_CUTOFF)
-DICT_CUTOFF = 5
-
- at specialize.call_location()
-def w_dict_unrolling_heuristic(w_dct):
- """ In which cases iterating over dict items can be unrolled.
- Note that w_dct is an instance of W_DictMultiObject, not necesarilly
- an actual dict
- """
- return isvirtual(w_dct) or (isconstant(w_dct) and
- w_dct.length() <= DICT_CUTOFF)
-
class Entry(ExtRegistryEntry):
_about_ = hint
More information about the pypy-commit
mailing list