[pypy-commit] pypy memoryerror3: still working

plan_rich noreply at buildbot.pypy.org
Mon Aug 24 13:51:41 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: memoryerror3
Changeset: r79200:f4a6026863c1
Date: 2015-08-24 13:51 +0200
http://bitbucket.org/pypy/pypy/changeset/f4a6026863c1/

Log:	still working

diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -759,15 +759,33 @@
 
     def __init__(self, operations):
         self.faildescrs = []
-        self.operations = operations
-
-    def setup_once(self):
+        self.operations = self.copy_operations(operations)
         idx = index_of_first(rop.LABEL, self.operations)
         assert idx >= 0
         label = self.operations[idx]
         self.inputargs = label.getarglist()
         self.renamed_inputargs = label.getarglist()
 
+    def setup_once(self):
+        pass
+
+    def copy_operations(self, operations):
+        ignore = (rop.DEBUG_MERGE_POINT,)
+        oplist = []
+        for op in operations:
+            if op.getopnum() in ignore:
+                continue
+            cloned = op.clone()
+            oplist.append(cloned)
+            if cloned.is_guard():
+                olddescr = cloned.getdescr()
+                if not olddescr:
+                    continue
+                descr = olddescr.clone()
+                cloned.setdescr(descr)
+        return oplist
+
+
     def compiled(self):
         if self.operations is None:
             # root version must always be compiled
@@ -884,8 +902,8 @@
         return None
 
     def snapshot(self):
-        oplist = self.copy_operations(self.operations)
-        version = LoopVersion(oplist)
+        #oplist = self.copy_operations(self.operations)
+        version = LoopVersion(self.operations)
         version.setup_once()
         self.versions.append(version)
         return version


More information about the pypy-commit mailing list