Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r91876:68a1a6af2bf4 Date: 2017-07-15 12:58 +0200 http://bitbucket.org/pypy/pypy/changeset/68a1a6af2bf4/
Log: Ooops, backout these changes that are not ready diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py --- a/pypy/objspace/std/listobject.py +++ b/pypy/objspace/std/listobject.py @@ -34,7 +34,6 @@ from pypy.objspace.std.tupleobject import W_AbstractTupleObject from pypy.objspace.std.unicodeobject import W_UnicodeObject from pypy.objspace.std.util import get_positive_index, negate -from pypy.objspace.std.noneobject import W_NoneObject __all__ = ['W_ListObject', 'make_range_list', 'make_empty_list_with_size'] @@ -122,8 +121,6 @@ elif type(w_obj) is W_FloatObject: if longlong2float.can_encode_float(space.float_w(w_obj)): continue # ok - elif type(w_obj) is W_NoneObject: - continue # ok break else: return space.fromcache(IntOrFloatListStrategy) @@ -1731,8 +1728,7 @@ return True def switch_to_next_strategy(self, w_list, w_sample_item): - if (type(w_sample_item) is W_FloatObject or - type(w_sample_item) is W_NoneObject): + if type(w_sample_item) is W_FloatObject: if self.switch_to_int_or_float_strategy(w_list): # yes, we can switch to IntOrFloatListStrategy # (ignore here the extremely unlikely case where @@ -1842,16 +1838,12 @@ return True def switch_to_next_strategy(self, w_list, w_sample_item): - try_switch = False if type(w_sample_item) is W_IntObject: sample_intval = self.space.int_w(w_sample_item) if longlong2float.can_encode_int32(sample_intval): - try_switch = True - elif type(w_sample_item) is W_NoneObject: - try_switch = True - if try_switch and self.switch_to_int_or_float_strategy(w_list): - # yes, we can switch to IntOrFloatListStrategy - return + if self.switch_to_int_or_float_strategy(w_list): + # yes, we can switch to IntOrFloatListStrategy + return # no, fall back to ObjectListStrategy w_list.switch_to_object_strategy() @@ -1862,8 +1854,6 @@ _none_value = longlong2float.float2longlong(0.0) def wrap(self, llval): - if llval == longlong2float.nan_encoded_none: - return self.space.w_None if longlong2float.is_int32_from_longlong_nan(llval): intval = longlong2float.decode_int32_from_longlong_nan(llval) return self.space.newint(intval) @@ -1875,8 +1865,6 @@ if type(w_int_or_float) is W_IntObject: intval = self.space.int_w(w_int_or_float) return longlong2float.encode_int32_into_longlong_nan(intval) - elif type(w_int_or_float) is W_NoneObject: - return longlong2float.nan_encoded_none else: floatval = self.space.float_w(w_int_or_float) return longlong2float.float2longlong(floatval) @@ -1892,8 +1880,6 @@ elif type(w_obj) is W_FloatObject: floatval = self.space.float_w(w_obj) return longlong2float.can_encode_float(floatval) - elif type(w_obj) is W_NoneObject: - return True else: return False diff --git a/rpython/rlib/longlong2float.py b/rpython/rlib/longlong2float.py --- a/rpython/rlib/longlong2float.py +++ b/rpython/rlib/longlong2float.py @@ -104,12 +104,10 @@ # ____________________________________________________________ -# For encoding integers or none inside nonstandard NaN bit patterns. +# For encoding integers inside nonstandard NaN bit patterns. # ff ff ff fe xx xx xx xx (signed 32-bit int) -# ff ff ff ff ff ff ff ac (none) nan_high_word_int32 = -2 # -2 == (int)0xfffffffe nan_encoded_zero = r_int64(nan_high_word_int32 << 32) -nan_encoded_none = r_int64(-84) def encode_int32_into_longlong_nan(value): return (nan_encoded_zero + @@ -129,9 +127,7 @@ return value == rffi.cast(lltype.Signed, rffi.cast(rffi.INT, value)) def can_encode_float(value): - return intmask(float2longlong(value) >> 33) != -1 -assert (nan_high_word_int32 >> 1) == -1 -assert (nan_encoded_none >> 33) == -1 + return intmask(float2longlong(value) >> 32) != nan_high_word_int32 def maybe_decode_longlong_as_float(value): # Decode a longlong value. If a float, just return it as a float. _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit