Author: Richard Plangger <r...@pasra.at>
Branch: vecopt
Changeset: r78578:a05aff84b29f
Date: 2015-07-17 15:28 +0200
http://bitbucket.org/pypy/pypy/changeset/a05aff84b29f/

Log:    added clone to a descriptor. I used invent_fail_descr before that,
        which did the same thing, but in a huge switch statement

diff --git a/rpython/jit/metainterp/compile.py 
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -674,6 +674,11 @@
                 assert 0, box.type
             self.status = ty | (r_uint(i) << self.ST_SHIFT)
 
+    def clone(self):
+        cloned = self.__class__()
+        cloned.copy_all_attributes_from(self)
+        return cloned
+
 class ResumeGuardNonnullDescr(ResumeGuardDescr):
     guard_opnum = rop.GUARD_NONNULL
 
@@ -815,6 +820,13 @@
         hidden_all_virtuals = obj.hide(metainterp_sd.cpu)
         metainterp_sd.cpu.set_savedata_ref(deadframe, hidden_all_virtuals)
 
+    def clone(self):
+        cloned = self.__class__()
+        cloned.metainterp_sd = self.metainterp_sd
+        cloned.jitdriver_sd = self.jitdriver_sd
+        cloned.copy_all_attributes_from(self)
+        return cloned
+
 def invent_fail_descr_for_op(opnum, optimizer):
     if opnum == rop.GUARD_NOT_FORCED or opnum == rop.GUARD_NOT_FORCED_2:
         resumedescr = ResumeGuardForcedDescr()
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
@@ -863,7 +863,14 @@
         return version
 
     def copy_operations(self):
-        return [ op.clone() for op in self.operations ]
+        operations = []
+        for op in self.operations:
+            cloned = op.clone()
+            operations.append(cloned)
+            if cloned.getdescr():
+                descr = cloned.getdescr().clone()
+                cloned.setdescr(descr)
+        return operations
 
     def get_display_text(self):    # for graphpage.py
         return self.name + '\n' + repr(self.inputargs)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to