Author: Manuel Jacob Branch: remove-remaining-smm Changeset: r69327:0893e9d51fd5 Date: 2014-02-24 02:54 +0100 http://bitbucket.org/pypy/pypy/changeset/0893e9d51fd5/
Log: Kill W_AbstractFloatObject, its only subclass is W_FloatObject. diff --git a/pypy/objspace/std/floatobject.py b/pypy/objspace/std/floatobject.py --- a/pypy/objspace/std/floatobject.py +++ b/pypy/objspace/std/floatobject.py @@ -25,33 +25,6 @@ float_hex = SMM("hex", 1) -class W_AbstractFloatObject(W_Object): - __slots__ = () - - def is_w(self, space, w_other): - from rpython.rlib.longlong2float import float2longlong - if not isinstance(w_other, W_AbstractFloatObject): - return False - if self.user_overridden_class or w_other.user_overridden_class: - return self is w_other - one = float2longlong(space.float_w(self)) - two = float2longlong(space.float_w(w_other)) - return one == two - - def immutable_unique_id(self, space): - if self.user_overridden_class: - return None - from rpython.rlib.longlong2float import float2longlong - from pypy.objspace.std.model import IDTAG_FLOAT as tag - val = float2longlong(space.float_w(self)) - b = rbigint.fromrarith_int(val) - b = b.lshift(3).or_(rbigint.fromint(tag)) - return space.newlong_from_rbigint(b) - - def int(self, space): - raise NotImplementedError - - def detect_floatformat(): from rpython.rtyper.lltypesystem import rffi, lltype buf = lltype.malloc(rffi.CCHARP.TO, 8, flavor='raw') @@ -154,7 +127,7 @@ return _compare -class W_FloatObject(W_AbstractFloatObject): +class W_FloatObject(W_Object): """This is a implementation of the app-level 'float' type. The constructor takes an RPython float as an argument.""" _immutable_fields_ = ['floatval'] @@ -179,6 +152,26 @@ else: return space.newint(value) + def is_w(self, space, w_other): + from rpython.rlib.longlong2float import float2longlong + if not isinstance(w_other, W_FloatObject): + return False + if self.user_overridden_class or w_other.user_overridden_class: + return self is w_other + one = float2longlong(space.float_w(self)) + two = float2longlong(space.float_w(w_other)) + return one == two + + def immutable_unique_id(self, space): + if self.user_overridden_class: + return None + from rpython.rlib.longlong2float import float2longlong + from pypy.objspace.std.model import IDTAG_FLOAT as tag + val = float2longlong(space.float_w(self)) + b = rbigint.fromrarith_int(val) + b = b.lshift(3).or_(rbigint.fromint(tag)) + return space.newlong_from_rbigint(b) + def __repr__(self): return "<W_FloatObject(%f)>" % self.floatval @@ -578,7 +571,7 @@ conjugate = interp2app(W_FloatObject.descr_conjugate), real = GetSetProperty(W_FloatObject.descr_get_real), imag = GetSetProperty(W_FloatObject.descr_get_imag), - __int__ = interpindirect2app(W_AbstractFloatObject.int), + __int__ = interpindirect2app(W_FloatObject.int), ) W_FloatObject.typedef.registermethods(globals()) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit