[pypy-commit] pypy optresult: fragile fragile

fijal noreply at buildbot.pypy.org
Wed Jun 3 14:12:21 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77817:be2d3c2e4d27
Date: 2015-06-03 14:12 +0200
http://bitbucket.org/pypy/pypy/changeset/be2d3c2e4d27/

Log:	fragile fragile

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
@@ -241,9 +241,9 @@
 class RawStructPtrInfo(AbstractRawPtrInfo):
     def __init__(self):
         pass
-    
-    def _force_elements(self, op, optforce, descr):
-        xxx
+
+    def is_virtual(self):
+        return False
 
 class RawSlicePtrInfo(AbstractRawPtrInfo):
     def __init__(self, offset, parent):
@@ -260,7 +260,7 @@
         self.parent.setitem_raw(self.offset+offset, itemsize, descr, itemop)
     
     def _force_elements(self, op, optforce, descr):
-        xxx
+        raise Exception("implement me")
 
     def visitor_walk_recursive(self, op, visitor, optimizer):
         source_op = optimizer.get_box_replacement(op.getarg(0))
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -768,7 +768,7 @@
             op.setdescr(descr)
         assert isinstance(descr, compile.ResumeGuardDescr)
         assert isinstance(op, GuardResOp)
-        modifier = resume.ResumeDataVirtualAdder(descr, op,
+        modifier = resume.ResumeDataVirtualAdder(self, descr, op,
                                                  self.resumedata_memo)
         try:
             newboxes = modifier.finish(self, pendingfields)
@@ -777,12 +777,7 @@
                 raise resume.TagOverflow
         except resume.TagOverflow:
             raise compile.giveup()
-        _newboxes = []
-        for box in newboxes:
-            if box is not None:
-                box = self.get_box_replacement(box)
-            _newboxes.append(box)
-        descr.store_final_boxes(op, _newboxes, self.metainterp_sd)
+        descr.store_final_boxes(op, newboxes, self.metainterp_sd)
         #
         if op.getopnum() == rop.GUARD_VALUE:
             if op.getarg(0).type == 'i':
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -223,10 +223,10 @@
                 is_virtual = False
                 if box.type == 'r':
                     info = optimizer.getptrinfo(box)
-                    is_virtual = (info and info.is_virtual())
+                    is_virtual = (info is not None and info.is_virtual())
                 if box.type == 'i':
                     info = optimizer.getrawptrinfo(box, create=False)
-                    is_virtual = (info and info.is_virtual()) 
+                    is_virtual = (info is not None and info.is_virtual()) 
                 if is_virtual:
                     tagged = tag(v, TAGVIRTUAL)
                     v += 1
@@ -286,7 +286,8 @@
 
 class ResumeDataVirtualAdder(VirtualVisitor):
 
-    def __init__(self, storage, snapshot_storage, memo):
+    def __init__(self, optimizer, storage, snapshot_storage, memo):
+        self.optimizer = optimizer
         self.storage = storage
         self.snapshot_storage = snapshot_storage
         self.memo = memo
@@ -343,9 +344,14 @@
         else:
             return VStrSliceInfo()
 
-    def register_virtual_fields(self, virtualbox, fieldboxes):
+    def register_virtual_fields(self, virtualbox, _fieldboxes):
         tagged = self.liveboxes_from_env.get(virtualbox, UNASSIGNEDVIRTUAL)
         self.liveboxes[virtualbox] = tagged
+        fieldboxes = []
+        for box in _fieldboxes:
+            if box is not None:
+                box = self.optimizer.get_box_replacement(box)
+            fieldboxes.append(box)
         self.vfieldboxes[virtualbox] = fieldboxes
         self._register_boxes(fieldboxes)
 


More information about the pypy-commit mailing list