[pypy-svn] r48920 - in pypy/dist/pypy/lang/smalltalk: . test
tverwaes at codespeak.net
tverwaes at codespeak.net
Thu Nov 22 13:44:35 CET 2007
Author: tverwaes
Date: Thu Nov 22 13:44:33 2007
New Revision: 48920
Modified:
pypy/dist/pypy/lang/smalltalk/model.py
pypy/dist/pypy/lang/smalltalk/primitives.py
pypy/dist/pypy/lang/smalltalk/test/test_miniimage.py
pypy/dist/pypy/lang/smalltalk/test/test_primitives.py
Log:
moving from varsize to primsize, since for compiledmethod != pointersobject
Modified: pypy/dist/pypy/lang/smalltalk/model.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/model.py (original)
+++ pypy/dist/pypy/lang/smalltalk/model.py Thu Nov 22 13:44:33 2007
@@ -141,10 +141,10 @@
self._vars = [w_nil] * size
def at0(self, index0):
- return self.fetchvarpointer(index0)
+ return self.fetch(index0)
def atput0(self, index0, w_value):
- self.storevarpointer(index0, w_value)
+ self.store(index0, w_value)
def fetch(self, n0):
return self._vars[n0]
@@ -166,6 +166,9 @@
def instsize(self):
return self.getclass().as_class_get_shadow().instsize()
+ def primsize(self):
+ return self.varsize()
+
def size(self):
return len(self._vars)
@@ -217,6 +220,9 @@
def size(self):
return len(self.bytes)
+ def primsize(self):
+ return self.size()
+
def __str__(self):
return self.as_string()
@@ -348,19 +354,21 @@
self.primitive is not None)
def size(self):
- return self.varsize()
+ return self.literalsize() + len(self.bytes)
- def staticsize(self):
+ def literalsize(self):
return len(self.literals) * constants.BYTES_PER_WORD
- def varsize(self):
- # XXX
- return self.staticsize() + len(self.bytes)
+ def primsize(self):
+ return self.size() + self.headersize()
+
+ def headersize(self):
+ return constants.BYTES_PER_WORD
def at0(self, index0):
# XXX
from pypy.lang.smalltalk import utility
- index0 = index0 - self.staticsize()
+ index0 = index0 - self.literalsize()
if index0 < 0:
# XXX Do something useful with this.... we are not a block
# of memory as smalltalk expects but wrapped in py-os
@@ -369,7 +377,7 @@
def atput0(self, index0, w_value):
from pypy.lang.smalltalk import utility
- index0 = index0 - self.staticsize()
+ index0 = index0 - self.literalsize()
if index0 < 0:
# XXX Do something useful with this.... we are not a block
# of memory as smalltalk expects but wrapped in py-os
Modified: pypy/dist/pypy/lang/smalltalk/primitives.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/primitives.py (original)
+++ pypy/dist/pypy/lang/smalltalk/primitives.py Thu Nov 22 13:44:33 2007
@@ -301,7 +301,7 @@
def func(interp, w_obj):
if not w_obj.shadow_of_my_class().isvariable():
raise PrimitiveFailedError()
- return utility.wrap_int(w_obj.varsize())
+ return utility.wrap_int(w_obj.primsize())
@expose_primitive(STRING_AT, unwrap_spec=[object, index1_0])
def func(interp, w_obj, n0):
Modified: pypy/dist/pypy/lang/smalltalk/test/test_miniimage.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/test/test_miniimage.py (original)
+++ pypy/dist/pypy/lang/smalltalk/test/test_miniimage.py Thu Nov 22 13:44:33 2007
@@ -227,14 +227,14 @@
assert w_false is objtable.w_false
def test_compile_method():
- py.test.skip("not working")
+ #py.test.skip("not working")
sourcecode = """fib
^self < 2
ifTrue: [ 1 ]
ifFalse: [ (self - 1) fib + (self - 2) fib ]"""
perform(w(10).getclass(), "compile:classified:notifying:", w(sourcecode), w('pypy'), w(None))
assert perform(w(10), "fib") == w(89)
-
+
def w(any):
if any is None:
return objtable.w_nil
Modified: pypy/dist/pypy/lang/smalltalk/test/test_primitives.py
==============================================================================
--- pypy/dist/pypy/lang/smalltalk/test/test_primitives.py (original)
+++ pypy/dist/pypy/lang/smalltalk/test/test_primitives.py Thu Nov 22 13:44:33 2007
@@ -206,6 +206,12 @@
w_obj = mockclass(3, varsized=True).as_class_get_shadow().new(5)
assert prim(primitives.SIZE, [w_obj]).value == 5
+def test_size_of_compiled_method():
+ varsize = 3
+ text = "abc"
+ w_cm = model.W_CompiledMethod(varsize, text, 1, 1)
+ assert prim(primitives.SIZE, [w_cm]).value == (varsize+1)*constants.BYTES_PER_WORD + len(text)
+
def test_string_at():
assert prim(primitives.STRING_AT, ["foobar", 4]) == wrap("b")
More information about the Pypy-commit
mailing list