[pypy-commit] lang-smalltalk default: fixed translation and type problems with the new c_layout changes to bytes and words objects

lwassermann noreply at buildbot.pypy.org
Thu Jun 20 13:05:31 CEST 2013


Author: Lars Wassermann <lars.wassermann at gmail.com>
Branch: 
Changeset: r470:046f02416b4f
Date: 2013-06-20 13:05 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/046f02416b4f/

Log:	fixed translation and type problems with the new c_layout changes to
	bytes and words objects

diff --git a/spyvm/model.py b/spyvm/model.py
--- a/spyvm/model.py
+++ b/spyvm/model.py
@@ -523,7 +523,7 @@
     def size(self):
         if self.has_shadow():
             return self._shadow.size()
-        return self._size()
+        return self.basic_size()
 
     def store_shadow(self, shadow):
         assert self._shadow is None or self._shadow is shadow
@@ -643,7 +643,7 @@
         fieldtypes = jit.promote(self.fieldtypes)
         return fieldtypes.store(self, n0, w_value)
 
-    def _size(self):
+    def basic_size(self):
         return len(self._vars)
 
     def invariant(self):
@@ -685,7 +685,7 @@
         assert w_value is not None
         self._weakvars[n0] = weakref.ref(w_value)
 
-    def _size(self):
+    def basic_size(self):
         return len(self._weakvars)
 
     def invariant(self):
@@ -831,7 +831,7 @@
             return self.c_bytes
         else:
             size = self.size()
-            c_bytes = self.c_bytes = rffi.str2charp(self.bytes)
+            c_bytes = self.c_bytes = rffi.str2charp(self.as_string())
             self.bytes = None
             return c_bytes
 
@@ -867,7 +867,7 @@
         if self.words is not None:
             return self.words[n]
         else:
-            return self.c_words[n]
+            return r_uint(self.c_words[n])
 
     def setword(self, n, word):
         if self.words is not None:
@@ -912,7 +912,7 @@
         if self.words is not None:
             w_result.words = list(self.words)
         else:
-            w_result.words = [self.c_words[i] for i in range(size)]
+            w_result.words = [r_uint(self.c_words[i]) for i in range(size)]
         return w_result
 
     def as_repr_string(self):
diff --git a/spyvm/shadow.py b/spyvm/shadow.py
--- a/spyvm/shadow.py
+++ b/spyvm/shadow.py
@@ -27,7 +27,7 @@
     def store(self, n0, w_value):
         return self.w_self()._store(n0, w_value)
     def size(self):
-        return self.w_self()._size()
+        return self.w_self().basic_size()
     def w_self(self):
         return self._w_self
     def getname(self):


More information about the pypy-commit mailing list