[pypy-commit] lang-smalltalk bitblt: merge default
timfel
noreply at buildbot.pypy.org
Sat Mar 16 13:35:39 CET 2013
Author: Tim Felgentreff <timfelgentreff at gmail.com>
Branch: bitblt
Changeset: r186:ec5c2d502e64
Date: 2013-03-16 10:39 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/ec5c2d502e64/
Log: merge default
diff --git a/spyvm/shadow.py b/spyvm/shadow.py
--- a/spyvm/shadow.py
+++ b/spyvm/shadow.py
@@ -71,7 +71,8 @@
WORDS = 2
WEAK_POINTERS = 3
COMPILED_METHOD = 4
-
+FLOAT = 5
+DISPLAY_SCREEN = 6
class MethodNotFound(error.SmalltalkException):
pass
@@ -128,7 +129,10 @@
elif format == 4:
self.instance_kind = WEAK_POINTERS
elif format == 6:
- self.instance_kind = WORDS
+ if self.space.w_Float.is_same_object(self.w_self()):
+ self.instance_kind = FLOAT
+ else:
+ self.instance_kind = WORDS
if self.instsize() != 0:
raise ClassShadowError("can't have both words and a non-zero "
"base instance size")
@@ -201,6 +205,8 @@
w_new = model.W_BytesObject(w_cls, extrasize)
elif self.instance_kind == COMPILED_METHOD:
w_new = model.W_CompiledMethod(extrasize)
+ elif self.instance_kind == FLOAT:
+ w_new = model.W_Float(0) # Squeak gives a random piece of memory
else:
raise NotImplementedError(self.instance_kind)
return w_new
diff --git a/spyvm/test/test_miniimage.py b/spyvm/test/test_miniimage.py
--- a/spyvm/test/test_miniimage.py
+++ b/spyvm/test/test_miniimage.py
@@ -343,3 +343,8 @@
assert w_result is not None
assert isinstance(w_result, model.W_Float)
assert w_result.value == math.pi
+
+def test_new_float_as_w_float():
+ w_result = perform(interp.space.w_Float, "new")
+ assert w_result is not None
+ assert isinstance(w_result, model.W_Float)
More information about the pypy-commit
mailing list