[pypy-commit] pypy guard-compatible: Change the interface again to take a CompiledLoopToken

arigo pypy.commits at gmail.com
Mon Mar 14 06:35:52 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: guard-compatible
Changeset: r83032:c51aa683936e
Date: 2016-03-14 11:35 +0100
http://bitbucket.org/pypy/pypy/changeset/c51aa683936e/

Log:	Change the interface again to take a CompiledLoopToken

diff --git a/rpython/jit/backend/llgraph/runner.py b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -470,7 +470,7 @@
         assert deadframe._saved_data is not None
         return deadframe._saved_data
 
-    def grow_guard_compatible_switch(self, looptoken, descr, ref):
+    def grow_guard_compatible_switch(self, compiled_loop_token, descr, ref):
         if not hasattr(descr, '_guard_compatible_llgraph_lst'):
             descr._guard_compatible_llgraph_lst = []
         descr._guard_compatible_llgraph_lst.append(ref)
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
@@ -158,7 +158,8 @@
         """
         pass
 
-    def grow_guard_compatible_switch(self, looptoken, guarddescr, gcref):
+    def grow_guard_compatible_switch(self, compiled_loop_token,
+                                     guarddescr, gcref):
         """ This method is called to add another case to a guard_compatible.
         guard_compatible starts like a guard_value, but can grow to check more
         cases. The guard should only fail if the argument is unequal to all the
@@ -308,6 +309,11 @@
         debug_print("allocating Loop #", self.number)
         debug_stop("jit-mem-looptoken-alloc")
 
+    def get_asmmemmgr_blocks(self):
+        if self.asmmemmgr_blocks is None:
+            self.asmmemmgr_blocks = []
+        return self.asmmemmgr_blocks
+
     def compiling_a_bridge(self):
         self.cpu.tracker.total_compiled_bridges += 1
         self.bridges_count += 1
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
@@ -214,8 +214,8 @@
         fail = self.cpu.get_latest_descr(deadframe)
         assert fail.identifier == 1
 
-        self.cpu.grow_guard_compatible_switch(looptoken, faildescr1,
-                                              t2_box._resref)
+        self.cpu.grow_guard_compatible_switch(looptoken.compiled_loop_token,
+                                              faildescr1, t2_box._resref)
         for retry in range(2):
             deadframe = self.cpu.execute_token(looptoken,
                                                t2_box._resref)
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
@@ -774,12 +774,9 @@
         mc.writeimm32(allocated_depth)
         mc.copy_to_raw_memory(adr)
 
-    @staticmethod
-    def get_asmmemmgr_blocks(looptoken):
+    def get_asmmemmgr_blocks(self, looptoken):
         clt = looptoken.compiled_loop_token
-        if clt.asmmemmgr_blocks is None:
-            clt.asmmemmgr_blocks = []
-        return clt.asmmemmgr_blocks
+        return clt.get_asmmemmgr_blocks()
 
     def materialize_loop(self, looptoken):
         self.datablockwrapper.done()      # finish using cpu.asmmemmgr
diff --git a/rpython/jit/backend/x86/guard_compat.py b/rpython/jit/backend/x86/guard_compat.py
--- a/rpython/jit/backend/x86/guard_compat.py
+++ b/rpython/jit/backend/x86/guard_compat.py
@@ -61,9 +61,7 @@
     descr._backend_compatinfo = rawstart + tok.pos_compatinfo_offset
 
 
-def grow_switch(cpu, looptoken, guarddescr, gcref):
-    from rpython.jit.backend.x86.assembler import Assembler386
-
+def grow_switch(cpu, compiled_loop_token, guarddescr, gcref):
     # XXX is it ok to force gcref to be non-movable?
     if not rgc._make_sure_does_not_move(gcref):
         raise AssertionError("oops")
@@ -79,7 +77,7 @@
     while compatinfo[length - 1] != -1:
         length += 1
 
-    allblocks = Assembler386.get_asmmemmgr_blocks(looptoken)
+    allblocks = compiled_loop_token.get_asmmemmgr_blocks()
     datablockwrapper = MachineDataBlockWrapper(cpu.asmmemmgr, allblocks)
     newcompatinfoaddr = datablockwrapper.malloc_aligned(
         (length + 1) * WORD, alignment=WORD)
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
@@ -122,8 +122,9 @@
             l[i].counter = ll_s.i
         return l
 
-    def grow_guard_compatible_switch(self, looptoken, guarddescr, gcref):
-        guard_compat.grow_switch(self, looptoken, guarddescr, gcref)
+    def grow_guard_compatible_switch(self, compiled_loop_token,
+                                     guarddescr, gcref):
+        guard_compat.grow_switch(self, compiled_loop_token, guarddescr, gcref)
 
 
 class CPU386(AbstractX86CPU):


More information about the pypy-commit mailing list