[pypy-commit] pypy optresult: Translation fix

arigo noreply at buildbot.pypy.org
Sun Aug 23 21:36:36 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: optresult
Changeset: r79171:c3624e107b1b
Date: 2015-08-23 20:02 +0100
http://bitbucket.org/pypy/pypy/changeset/c3624e107b1b/

Log:	Translation fix

diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -194,6 +194,11 @@
         if self.size != -1:
             self.buffer = RawBuffer(cpu, None)
 
+    def _get_buffer(self):
+        buffer = self.buffer
+        assert buffer is not None
+        return buffer
+
     def getitem_raw(self, offset, itemsize, descr):
         if not self.is_virtual():
             raise InvalidRawOperation
@@ -201,37 +206,39 @@
             # for the test above: it's not enough to check is_virtual()
             # on the original object, because it might be a VRawSliceValue
             # instead.  If it is a virtual one, then we'll reach here anway.
-        return self.buffer.read_value(offset, itemsize, descr)
+        return self._get_buffer().read_value(offset, itemsize, descr)
 
     def setitem_raw(self, offset, itemsize, descr, itemop):
         if not self.is_virtual():
             raise InvalidRawOperation
-        self.buffer.write_value(offset, itemsize, descr, itemop)
+        self._get_buffer().write_value(offset, itemsize, descr, itemop)
 
     def is_virtual(self):
         return self.size != -1
 
     def _force_elements(self, op, optforce, descr):
         self.size = -1
-        for i in range(len(self.buffer.offsets)):
+        buffer = self._get_buffer()
+        for i in range(len(buffer.offsets)):
             # write the value
-            offset = self.buffer.offsets[i]
-            descr = self.buffer.descrs[i]
-            itembox = self.buffer.values[i]
+            offset = buffer.offsets[i]
+            descr = buffer.descrs[i]
+            itembox = buffer.values[i]
             op = ResOperation(rop.RAW_STORE,
                               [op, ConstInt(offset), itembox], descr=descr)
             optforce.emit_operation(op)
 
     def visitor_walk_recursive(self, op, visitor, optimizer):
-        itemboxes = self.buffer.values
+        itemboxes = self._get_buffer().values
         visitor.register_virtual_fields(op, itemboxes)
         # there can be no virtuals stored in raw buffer
 
     @specialize.argtype(1)
     def visitor_dispatch_virtual_type(self, visitor):
+        buffer = self._get_buffer()
         return visitor.visit_vrawbuffer(self.size,
-                                        self.buffer.offsets[:],
-                                        self.buffer.descrs[:])
+                                        buffer.offsets[:],
+                                        buffer.descrs[:])
 
 class RawStructPtrInfo(AbstractRawPtrInfo):
     def __init__(self):


More information about the pypy-commit mailing list