Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r89772:db5482cc94a2 Date: 2017-01-25 20:36 +0000 http://bitbucket.org/pypy/pypy/changeset/db5482cc94a2/
Log: Fixes, trying to use siphash24 on pypy diff --git a/rpython/rlib/objectmodel.py b/rpython/rlib/objectmodel.py --- a/rpython/rlib/objectmodel.py +++ b/rpython/rlib/objectmodel.py @@ -614,6 +614,9 @@ This version is called from lltypesystem/rstr.py, and 'll_s' is a rstr.STR or rstr.UNICODE. """ + if not we_are_translated(): + global HASH_ALGORITHM_FIXED + HASH_ALGORITHM_FIXED = True if HASH_ALGORITHM == "rpython": return _hash_string_rpython(ll_s.chars) if HASH_ALGORITHM == "siphash24": diff --git a/rpython/rtyper/lltypesystem/rstr.py b/rpython/rtyper/lltypesystem/rstr.py --- a/rpython/rtyper/lltypesystem/rstr.py +++ b/rpython/rtyper/lltypesystem/rstr.py @@ -44,11 +44,13 @@ mallocstr = new_malloc(STR, 'mallocstr') mallocunicode = new_malloc(UNICODE, 'mallocunicode') +@specialize.memo() def emptystrfun(): - return emptystr + return string_repr.convert_const("") +@specialize.memo() def emptyunicodefun(): - return emptyunicode + return unicode_repr.convert_const(u'') def _new_copy_contents_fun(SRC_TP, DST_TP, CHAR_TP, name): @specialize.arg(0) @@ -1280,8 +1282,6 @@ char_repr.ll = LLHelpers unichar_repr.ll = LLHelpers unicode_repr = UnicodeRepr() -emptystr = string_repr.convert_const("") -emptyunicode = unicode_repr.convert_const(u'') StringRepr.repr = string_repr UnicodeRepr.repr = unicode_repr @@ -1340,14 +1340,6 @@ string_repr.iterator_repr = StringIteratorRepr() unicode_repr.iterator_repr = UnicodeIteratorRepr() -# these should be in rclass, but circular imports prevent (also it's -# not that insane that a string constant is built in this file). - -instance_str_prefix = string_repr.convert_const("<") -instance_str_infix = string_repr.convert_const(" object at 0x") -instance_str_suffix = string_repr.convert_const(">") - -null_str = string_repr.convert_const("NULL") - -unboxed_instance_str_prefix = string_repr.convert_const("<unboxed ") -unboxed_instance_str_suffix = string_repr.convert_const(">") +@specialize.memo() +def conststr(s): + return string_repr.convert_const(s) diff --git a/rpython/rtyper/lltypesystem/rtagged.py b/rpython/rtyper/lltypesystem/rtagged.py --- a/rpython/rtyper/lltypesystem/rtagged.py +++ b/rpython/rtyper/lltypesystem/rtagged.py @@ -117,9 +117,9 @@ from rpython.rtyper.lltypesystem import rstr from rpython.rtyper.rint import signed_repr llstr1 = signed_repr.ll_str(ll_unboxed_to_int(i)) - return rstr.ll_strconcat(rstr.unboxed_instance_str_prefix, + return rstr.ll_strconcat(rstr.conststr("<unboxed "), rstr.ll_strconcat(llstr1, - rstr.unboxed_instance_str_suffix)) + rstr.conststr(">"))) else: return InstanceRepr.ll_str(self, i) diff --git a/rpython/rtyper/rclass.py b/rpython/rtyper/rclass.py --- a/rpython/rtyper/rclass.py +++ b/rpython/rtyper/rclass.py @@ -840,18 +840,18 @@ from rpython.rtyper.lltypesystem.ll_str import ll_int2hex from rpython.rlib.rarithmetic import r_uint if not i: - return rstr.null_str + return rstr.conststr("NULL") instance = cast_pointer(OBJECTPTR, i) # Two choices: the first gives a fast answer but it can change # (typically only once) during the life of the object. #uid = r_uint(cast_ptr_to_int(i)) uid = r_uint(llop.gc_id(lltype.Signed, i)) # - res = rstr.instance_str_prefix + res = rstr.conststr("<") res = rstr.ll_strconcat(res, instance.typeptr.name) - res = rstr.ll_strconcat(res, rstr.instance_str_infix) + res = rstr.ll_strconcat(res, rstr.conststr(" object at 0x")) res = rstr.ll_strconcat(res, ll_int2hex(uid, False)) - res = rstr.ll_strconcat(res, rstr.instance_str_suffix) + res = rstr.ll_strconcat(res, rstr.conststr(">")) return res def get_ll_eq_function(self): @@ -1092,7 +1092,6 @@ except StandardError: return None - # ____________________________________________________________ # # Low-level implementation of operations on classes and instances _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit