[pypy-commit] pypy jit-ordereddict: Add oopspec pointers, copying what is done for dicts.
arigo
noreply at buildbot.pypy.org
Wed Dec 25 21:34:41 CET 2013
Author: Armin Rigo <arigo at tunes.org>
Branch: jit-ordereddict
Changeset: r68544:0634f23dd20e
Date: 2013-12-25 21:34 +0100
http://bitbucket.org/pypy/pypy/changeset/0634f23dd20e/
Log: Add oopspec pointers, copying what is done for dicts. It seems to be
enough, all tests pass.
diff --git a/rpython/jit/codewriter/support.py b/rpython/jit/codewriter/support.py
--- a/rpython/jit/codewriter/support.py
+++ b/rpython/jit/codewriter/support.py
@@ -14,6 +14,7 @@
from rpython.rtyper.extregistry import ExtRegistryEntry
from rpython.rtyper.llinterp import LLInterpreter
from rpython.rtyper.lltypesystem import lltype, rclass, rffi, llmemory, rstr as ll_rstr, rdict as ll_rdict
+from rpython.rtyper.lltypesystem import rordereddict
from rpython.rtyper.lltypesystem.lloperation import llop
from rpython.rtyper.lltypesystem.module import ll_math
from rpython.translator.translator import TranslationContext
@@ -519,6 +520,33 @@
_ll_1_dict_resize = ll_rdict.ll_dict_resize
+ # ---------- ordered dict ----------
+
+ _ll_1_odict_copy = rordereddict.ll_dict_copy
+ _ll_1_odict_clear = rordereddict.ll_dict_clear
+ _ll_2_odict_update = rordereddict.ll_dict_update
+
+ _ll_1_odict_keys = rordereddict.ll_dict_keys
+ _ll_1_odict_values = rordereddict.ll_dict_values
+ _ll_1_odict_items = rordereddict.ll_dict_items
+ _ll_1_odict_keys .need_result_type = True
+ _ll_1_odict_values.need_result_type = True
+ _ll_1_odict_items .need_result_type = True
+
+ _odictnext_keys = staticmethod(rordereddict.ll_dictnext_group['keys'])
+ _odictnext_values = staticmethod(rordereddict.ll_dictnext_group['values'])
+ _odictnext_items = staticmethod(rordereddict.ll_dictnext_group['items'])
+
+ def _ll_1_odictiter_nextkeys(iter):
+ return LLtypeHelpers._odictnext_keys(None, iter)
+ def _ll_1_odictiter_nextvalues(iter):
+ return LLtypeHelpers._odictnext_values(None, iter)
+ def _ll_1_odictiter_nextitems(RES, iter):
+ return LLtypeHelpers._odictnext_items(lltype.Ptr(RES), iter)
+ _ll_1_odictiter_nextitems.need_result_type = True
+
+ _ll_1_odict_resize = rordereddict.ll_dict_resize
+
# ---------- strings and unicode ----------
_ll_1_str_str2unicode = ll_rstr.LLHelpers.ll_str2unicode
More information about the pypy-commit
mailing list