[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