Author: Anton Gulenko <anton.gule...@googlemail.com>
Branch: storage
Changeset: r722:55415cc1047d
Date: 2014-03-29 00:01 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/55415cc1047d/

Log:    Changed sentinel-value of Float-storage to a regular float
        (max_float). The longlong/lltype cast operations take too long.

diff --git a/spyvm/shadow.py b/spyvm/shadow.py
--- a/spyvm/shadow.py
+++ b/spyvm/shadow.py
@@ -1,4 +1,4 @@
-import weakref
+import sys, weakref
 from spyvm import model, constants, error, wrapper, version
 from spyvm.version import elidable_for_version, constant_for_version
 from rpython.tool.pairtype import extendabletype
@@ -141,9 +141,7 @@
 
 class FloatOrNilStorageShadow(AbstractStorageShadow):
     repr_classname = "FloatOrNilStorageShadow"
-    # TODO -- use another value... something like max_float?
-    nil_value = runpack("d", "\x10\x00\x00\x00\x00\x00\xf8\x7f")
-    nil_value_longlong = longlong2float.float2longlong(nil_value)
+    nil_value = sys.float_info.max
     wrapper_class = model.W_Float
     import_from_mixin(AbstractValueOrNilStorageMixin)
     
@@ -152,7 +150,7 @@
         return _value_or_nil_can_handle(FloatOrNilStorageShadow, space, w_val)
     @staticmethod
     def is_nil_value(val):
-        return longlong2float.float2longlong(val) == 
FloatOrNilStorageShadow.nil_value_longlong
+        return val == FloatOrNilStorageShadow.nil_value
     @staticmethod
     def wrap(space, val):
         return space.wrap_float(val)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to