Author: Maciej Fijalkowski <[email protected]>
Branch: resume-refactor
Changeset: r67422:8604e65fa007
Date: 2013-10-16 15:16 +0200
http://bitbucket.org/pypy/pypy/changeset/8604e65fa007/

Log:    (fijal, agaynor) rebuild faillocs for the bridge

diff --git a/rpython/jit/backend/llsupport/assembler.py 
b/rpython/jit/backend/llsupport/assembler.py
--- a/rpython/jit/backend/llsupport/assembler.py
+++ b/rpython/jit/backend/llsupport/assembler.py
@@ -111,9 +111,7 @@
         self._debug = v
         return r
 
-    def rebuild_faillocs_from_descr(self, descr, inputargs):
-        XXX
-        loc_positions = rebuild_locs_from_resumedata(descr)
+    def rebuild_faillocs_from_descr(self, descr, inputargs, loc_positions):
         locs = [None] * len(loc_positions)
         GPR_REGS = len(self.cpu.gen_regs)
         XMM_REGS = len(self.cpu.float_regs)
diff --git a/rpython/jit/backend/model.py b/rpython/jit/backend/model.py
--- a/rpython/jit/backend/model.py
+++ b/rpython/jit/backend/model.py
@@ -68,8 +68,8 @@
         """
         raise NotImplementedError
 
-    def compile_bridge(self, logger, faildescr, inputargs, operations,
-                       original_loop_token, log=True):
+    def compile_bridge(self, logger, faildescr, inputargs, backend_positions,
+                       operations, original_loop_token, log=True):
         """Assemble the bridge.
         The FailDescr is the descr of the original guard that failed.
 
diff --git a/rpython/jit/backend/test/runner_test.py 
b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -9,7 +9,7 @@
                                          BoxFloat, ConstFloat)
 from rpython.jit.metainterp.resoperation import ResOperation, rop
 from rpython.jit.metainterp.typesystem import deref
-from rpython.jit.metainterp.resume2 import rebuild_faillocs_from_resumedata
+from rpython.jit.metainterp.test.test_resume2 import 
rebuild_locs_from_resumedata
 from rpython.jit.codewriter.effectinfo import EffectInfo
 from rpython.jit.codewriter.jitcode import JitCode
 from rpython.jit.tool.oparser import parse
@@ -246,7 +246,8 @@
             ResOperation(rop.JUMP, [i1b], None, descr=targettoken),
         ]
 
-        self.cpu.compile_bridge(None, faildescr1, [i1b], bridge, looptoken)
+        locs = rebuild_locs_from_resumedata(faildescr1)
+        self.cpu.compile_bridge(None, faildescr1, [i1b], locs, bridge, 
looptoken)
 
         deadframe = self.cpu.execute_token(looptoken, 2)
         fail = self.cpu.get_latest_descr(deadframe)
diff --git a/rpython/jit/backend/x86/assembler.py 
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -514,8 +514,8 @@
         return AsmInfo(ops_offset, rawstart + looppos,
                        size_excluding_failure_stuff - looppos)
 
-    def assemble_bridge(self, logger, faildescr, inputargs, operations,
-                        original_loop_token, log):
+    def assemble_bridge(self, logger, faildescr, inputargs, backend_positions,
+                        operations, original_loop_token, log):
         if not we_are_translated():
             # Arguments should be unique
             assert len(set(inputargs)) == len(inputargs)
@@ -526,7 +526,7 @@
             operations = self._inject_debugging_code(faildescr, operations,
                                                      'b', descr_number)
 
-        arglocs = self.rebuild_faillocs_from_descr(faildescr, inputargs)
+        arglocs = self.rebuild_faillocs_from_descr(faildescr, inputargs, 
backend_positions)
         regalloc = RegAlloc(self, self.cpu.translate_support_code)
         startpos = self.mc.get_relative_pos()
         operations = regalloc.prepare_bridge(inputargs, arglocs,
@@ -538,7 +538,7 @@
         frame_depth_no_fixed_size = self._assemble(regalloc, inputargs, 
operations)
         codeendpos = self.mc.get_relative_pos()
         self.resume_bytecode = regalloc.resumebuilder.finish(
-            faildescr.rd_bytecode, original_loop_token)
+            faildescr.rd_resume_bytecode, original_loop_token)
         self.write_pending_failure_recoveries()
         fullsize = self.mc.get_relative_pos()
         #
diff --git a/rpython/jit/backend/x86/runner.py 
b/rpython/jit/backend/x86/runner.py
--- a/rpython/jit/backend/x86/runner.py
+++ b/rpython/jit/backend/x86/runner.py
@@ -93,12 +93,12 @@
         return self.assembler.assemble_loop(logger, name, inputargs, 
operations,
                                             looptoken, log=log)
 
-    def compile_bridge(self, logger, faildescr, inputargs, operations,
-                       original_loop_token, log=True):
+    def compile_bridge(self, logger, faildescr, inputargs, backend_positions,
+                       operations, original_loop_token, log=True):
         clt = original_loop_token.compiled_loop_token
         clt.compiling_a_bridge()
         return self.assembler.assemble_bridge(logger, faildescr, inputargs,
-                                              operations,
+                                              backend_positions, operations,
                                               original_loop_token, log=log)
 
     def clear_latest_values(self, count):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to