[pypy-commit] pypy jit-usable_retrace_3: rpythonized

hakanardo noreply at buildbot.pypy.org
Sun Dec 30 16:34:50 CET 2012


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-usable_retrace_3
Changeset: r59632:c10f50bbce17
Date: 2012-12-30 16:32 +0100
http://bitbucket.org/pypy/pypy/changeset/c10f50bbce17/

Log:	rpythonized

diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -217,7 +217,9 @@
         assert label.getopnum() == rop.LABEL
         target_token = label.getdescr()
         assert isinstance(target_token, TargetToken)
-        target_token.exported_state.generalize_virtual_state = original_target_token.virtual_state
+        exported_state = target_token.exported_state
+        assert exported_state is not None
+        exported_state.generalize_virtual_state = original_target_token.virtual_state
 
         loop.inputargs = inputargs[:]
         loop.resume_at_jump_descr = resume_at_jump_descr
@@ -238,8 +240,10 @@
         if target_token.short_preamble:
             metainterp_sd.logger_ops.log_short_preamble([], target_token.short_preamble)
 
+        exported_state = original_target_token.exported_state
+        assert exported_state is not None
         preamble.operations = [orignial_label] + \
-                              [ResOperation(rop.JUMP, original_target_token.exported_state.jump_args,
+                              [ResOperation(rop.JUMP, exported_state.jump_args,
                                             None, descr=loop_jitcell_token)]
         try:
             optimize_trace(metainterp_sd, preamble, jitdriver_sd.warmstate.enable_opts)
@@ -254,7 +258,9 @@
         if jumpop.getdescr() is not loop.operations[0].getdescr():
             assert loop_jitcell_token.target_tokens.pop() is loop.operations[0].getdescr()
             raise InvalidLoop
-        preamble.operations = preamble.operations[1:-1]
+        stop = len(preamble.operations) - 1
+        assert stop >= 1 # There should always be atleast one label and one jump
+        preamble.operations = preamble.operations[1:stop]
         
         usedboxes = {}
         newargs = [None] * jumpop.numargs()
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -172,7 +172,9 @@
 
     def kill_null_fields(self):
         assert len(self.fielddescrs) == len(self.fieldstate)
-        for i in reversed(range(len(self.fielddescrs))):
+        i = len(self.fielddescrs)
+        while i > 0:
+            i -= 1
             if self.fieldstate[i].is_null():
                 del self.fieldstate[i]
                 del self.fielddescrs[i]


More information about the pypy-commit mailing list