[pypy-commit] pypy jit-targets: bridge support

hakanardo noreply at buildbot.pypy.org
Sun Nov 6 18:26:18 CET 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-targets
Changeset: r48832:9b87dd5eeb7f
Date: 2011-11-06 17:05 +0100
http://bitbucket.org/pypy/pypy/changeset/9b87dd5eeb7f/

Log:	bridge support

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
@@ -426,13 +426,13 @@
         # We managed to create a bridge.  Attach the new operations
         # to the corresponding guard_op and compile from there
         assert metainterp.resumekey_original_loop_token is not None
-        new_loop.token = metainterp.resumekey_original_loop_token
+        new_loop.original_jitcell_token = metainterp.resumekey_original_loop_token
         inputargs = metainterp.history.inputargs
         if not we_are_translated():
             self._debug_suboperations = new_loop.operations
         send_bridge_to_backend(metainterp.jitdriver_sd, metainterp.staticdata,
                                self, inputargs, new_loop.operations,
-                               new_loop.token)
+                               new_loop.original_jitcell_token)
 
     def copy_all_attributes_into(self, res):
         # XXX a bit ugly to have to list them all here
diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -442,7 +442,7 @@
         debug_start('jit-log-virtualstate')
         virtual_state.debug_print("Looking for ")
 
-        for target in procedure_token.target_tokens:
+        for target in cell_token.target_tokens:
             if not target.virtual_state:
                 continue
             ok = False
@@ -481,24 +481,24 @@
                         descr = target.start_resumedescr.clone_if_mutable()
                         inliner.inline_descr_inplace(descr)
                         guard.setdescr(descr)
-                    self.emit_operation(guard)
+                    self.optimizer.send_extra_operation(guard)
 
                 try:
                     for shop in target.short_preamble[1:]:
                         newop = inliner.inline_op(shop)
-                        self.emit_operation(newop)
+                        self.optimizer.send_extra_operation(newop)
                 except InvalidLoop:
                     debug_print("Inlining failed unexpectedly",
                                 "jumping to preamble instead")
                     assert False, "FIXME: Construct jump op"
-                    self.emit_operation(op)
+                    self.optimizer.send_extra_operation(op)
                 return True
         debug_stop('jit-log-virtualstate')
 
-        retraced_count = procedure_token.retraced_count
+        retraced_count = cell_token.retraced_count
         limit = self.optimizer.metainterp_sd.warmrunnerdesc.memory_manager.retrace_limit
         if not self.retraced and retraced_count<limit:
-            procedure_token.retraced_count += 1
+            cell_token.retraced_count += 1
             return False
 
         
diff --git a/pypy/jit/metainterp/pyjitpl.py b/pypy/jit/metainterp/pyjitpl.py
--- a/pypy/jit/metainterp/pyjitpl.py
+++ b/pypy/jit/metainterp/pyjitpl.py
@@ -2037,20 +2037,20 @@
     def compile_trace(self, live_arg_boxes):
         num_green_args = self.jitdriver_sd.num_green_args
         greenkey = live_arg_boxes[:num_green_args]
-        target_procedure = self.get_procedure_token(greenkey)
-        if not target_procedure:
+        target_jitcell_token = self.get_procedure_token(greenkey)
+        if not target_jitcell_token:
             return
 
-        self.history.record(rop.LABEL, live_arg_boxes[num_green_args:], None,
-                            descr=TargetToken(target_procedure))
+        self.history.record(rop.JUMP, live_arg_boxes[num_green_args:], None,
+                            descr=target_jitcell_token)
         try:
-            target_token = compile.compile_new_bridge(self, self.resumekey)
+            target_token = compile.compile_trace(self, self.resumekey)
         finally:
             self.history.operations.pop()     # remove the JUMP
         if target_token is not None: # raise if it *worked* correctly
             self.history.inputargs = None
             self.history.operations = None
-            raise GenerateMergePoint(live_arg_boxes, target_token.procedure_token)
+            raise GenerateMergePoint(live_arg_boxes, target_token.cell_token)
 
     def compile_bridge_and_loop(self, original_boxes, live_arg_boxes, start,
                                 bridge_arg_boxes, start_resumedescr):


More information about the pypy-commit mailing list