[pypy-commit] pypy resume-refactor: Fix until we start passing tests

fijal noreply at buildbot.pypy.org
Wed Oct 16 16:37:14 CEST 2013


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: resume-refactor
Changeset: r67426:3d44b7201a68
Date: 2013-10-16 16:36 +0200
http://bitbucket.org/pypy/pypy/changeset/3d44b7201a68/

Log:	Fix until we start passing tests

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
@@ -4,7 +4,6 @@
 from rpython.jit.metainterp.history import (INT, REF, FLOAT, JitCellToken,
     ConstInt, BoxInt, AbstractFailDescr)
 from rpython.jit.metainterp.resoperation import ResOperation, rop
-#from rpython.jit.metainterp.resume2 import rebuild_locs_from_resumedata
 from rpython.rlib import rgc
 from rpython.rlib.debug import (debug_start, debug_stop, have_debug_prints,
                                 debug_print)
@@ -121,16 +120,16 @@
         else:
             coeff = 2
         for item, pos in enumerate(loc_positions):
-            if pos < GPR_REGS * WORD:
-                locs[item] = self.cpu.gen_regs[pos // WORD]
-            elif pos < (GPR_REGS + XMM_REGS * coeff) * WORD:
-                pos = (pos // WORD - GPR_REGS) // coeff
+            if pos < GPR_REGS:
+                locs[item] = self.cpu.gen_regs[pos]
+            elif pos < (GPR_REGS + XMM_REGS * coeff):
+                pos = (pos - GPR_REGS) // coeff
                 locs[item] = self.cpu.float_regs[pos]
             else:
-                i = pos // WORD - self.cpu.JITFRAME_FIXED_SIZE
+                i = pos - self.cpu.JITFRAME_FIXED_SIZE
                 assert i >= 0
                 tp = inputargs[input_i].type
-                locs[item] = self.new_stack_loc(i, pos, tp)
+                locs[item] = self.new_stack_loc(i, pos * WORD, tp)
             input_i += 1
         return locs
 
diff --git a/rpython/jit/backend/llsupport/llmodel.py b/rpython/jit/backend/llsupport/llmodel.py
--- a/rpython/jit/backend/llsupport/llmodel.py
+++ b/rpython/jit/backend/llsupport/llmodel.py
@@ -339,19 +339,31 @@
         assert isinstance(res, history.AbstractFailDescr)
         return res
 
-    def get_int_value(self, deadframe, pos):
+    def get_int_value(self, deadframe, locs, pos):
         descr = self.gc_ll_descr.getframedescrs(self).arraydescr
         ofs = self.unpack_arraydescr(descr)
+        if locs is None:
+            assert pos == 0
+        else:
+            pos = locs[pos] * WORD
         return self.read_int_at_mem(deadframe, pos + ofs, WORD, 1)
 
-    def get_ref_value(self, deadframe, pos):
+    def get_ref_value(self, deadframe, locs, pos):
         descr = self.gc_ll_descr.getframedescrs(self).arraydescr
         ofs = self.unpack_arraydescr(descr)
+        if locs is None:
+            assert pos == 0
+        else:
+            pos = locs[pos] * WORD
         return self.read_ref_at_mem(deadframe, pos + ofs)
 
-    def get_float_value(self, deadframe, pos):
+    def get_float_value(self, deadframe, locs, pos):
         descr = self.gc_ll_descr.getframedescrs(self).arraydescr
         ofs = self.unpack_arraydescr(descr)
+        if locs is None:
+            assert pos == 0
+        else:
+            pos = locs[pos] * WORD
         return self.read_float_at_mem(deadframe, pos + ofs)
 
     # ____________________ RAW PRIMITIVES ________________________
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
@@ -102,22 +102,22 @@
         """Returns the Descr for the last operation executed by the frame."""
         raise NotImplementedError
 
-    def get_int_value(self, deadframe, index):
-        """Returns the value for the index'th argument to the
-        last executed operation (from 'fail_args' if it was a guard,
-        or from 'args' if it was a FINISH).  Returns an int."""
+    def get_int_value(self, deadframe, locations, index):
+        """ Return the value for the index'th argument in the
+        given backend-specific locations. Returns an int.
+        """
         raise NotImplementedError
 
-    def get_float_value(self, deadframe, index):
-        """Returns the value for the index'th argument to the
-        last executed operation (from 'fail_args' if it was a guard,
-        or from 'args' if it was a FINISH).  Returns a FLOATSTORAGE."""
+    def get_float_value(self, deadframe, locations, index):
+        """ Return the value for the index'th argument in the
+        given backend-specific locations. Returns a FLOATSTORAGE.
+        """
         raise NotImplementedError
 
-    def get_ref_value(self, deadframe, index):
-        """Returns the value for the index'th argument to the
-        last executed operation (from 'fail_args' if it was a guard,
-        or from 'args' if it was a FINISH).  Returns a GCREF."""
+    def get_ref_value(self, deadframe, locations, index):
+        """ Return the value for the index'th argument in the
+        given backend-specific locations. Returns a GCREF.
+        """
         raise NotImplementedError
 
     def grab_exc_value(self, deadframe):
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
@@ -132,7 +132,7 @@
         self.cpu.compile_loop(None, inputargs, operations, looptoken)
         deadframe = self.cpu.execute_token(looptoken, 2)
         fail = self.cpu.get_latest_descr(deadframe)
-        res = self.cpu.get_int_value(deadframe, 0)
+        res = self.cpu.get_int_value(deadframe, None, 0)
         assert res == 3
         assert fail.identifier == 1
 
@@ -151,7 +151,7 @@
         deadframe = self.cpu.execute_token(looptoken,
                                            longlong.getfloatstorage(2.8))
         fail = self.cpu.get_latest_descr(deadframe)
-        res = self.cpu.get_float_value(deadframe, 0)
+        res = self.cpu.get_float_value(deadframe, None, 0)
         assert longlong.getrealfloat(res) == 5.1
         fail = self.cpu.get_latest_descr(deadframe)
         assert fail.identifier == 1
@@ -181,7 +181,8 @@
         deadframe = self.cpu.execute_token(looptoken, 2)
         fail = self.cpu.get_latest_descr(deadframe)
         assert fail.identifier == 2
-        res = self.cpu.get_int_value(deadframe, 0)
+        locs = rebuild_locs_from_resumedata(fail)
+        res = self.cpu.get_int_value(deadframe, locs, 0)
         assert res == 10
 
     def test_backends_dont_keep_loops_alive(self):
@@ -252,7 +253,8 @@
         deadframe = self.cpu.execute_token(looptoken, 2)
         fail = self.cpu.get_latest_descr(deadframe)
         assert fail.identifier == 2
-        res = self.cpu.get_int_value(deadframe, 0)
+        locs = rebuild_locs_from_resumedata(fail)
+        res = self.cpu.get_int_value(deadframe, locs, 0)
         assert res == 20
 
         assert self.cpu.tracker.total_compiled_loops == 1
@@ -290,18 +292,16 @@
                                    descr=BasicFailDescr(3)))
         bridge.append(ResOperation(rop.FINISH, [], None,
                                    descr=BasicFinalDescr(4)))
-        # XXX
-        #bridge[-2].setfailargs(i1list)
-
-        locs = rebuild_locs_from_resumedata(faildescr1)
-        self.cpu.compile_bridge(None, faildescr1, [i0], locs, bridge, looptoken)
+
+        faillocs = rebuild_locs_from_resumedata(faildescr1)
+        self.cpu.compile_bridge(None, faildescr1, [i0], faillocs, bridge, looptoken)
 
         deadframe = self.cpu.execute_token(looptoken, 1)
         fail = self.cpu.get_latest_descr(deadframe)
         locs = rebuild_locs_from_resumedata(fail)
         assert fail.identifier == 3
         for i in range(len(i1list)):
-            res = self.cpu.get_int_value(deadframe, locs[i + 1])
+            res = self.cpu.get_int_value(deadframe, locs, i + 1)
             assert res == 2 + i
 
     def test_finish(self):
@@ -323,7 +323,7 @@
         deadframe = self.cpu.execute_token(looptoken, 99)
         fail = self.cpu.get_latest_descr(deadframe)
         assert fail is faildescr
-        res = self.cpu.get_int_value(deadframe, 0)
+        res = self.cpu.get_int_value(deadframe, None, 0)
         assert res == 99
 
         looptoken = JitCellToken()
@@ -334,7 +334,7 @@
         deadframe = self.cpu.execute_token(looptoken)
         fail = self.cpu.get_latest_descr(deadframe)
         assert fail is faildescr
-        res = self.cpu.get_int_value(deadframe, 0)
+        res = self.cpu.get_int_value(deadframe, None, 0)
         assert res == 42
 
         looptoken = JitCellToken()
@@ -357,7 +357,7 @@
             deadframe = self.cpu.execute_token(looptoken, value)
             fail = self.cpu.get_latest_descr(deadframe)
             assert fail is faildescr
-            res = self.cpu.get_float_value(deadframe, 0)
+            res = self.cpu.get_float_value(deadframe, None, 0)
             assert longlong.getrealfloat(res) == -61.25
 
             looptoken = JitCellToken()
@@ -368,7 +368,7 @@
             deadframe = self.cpu.execute_token(looptoken)
             fail = self.cpu.get_latest_descr(deadframe)
             assert fail is faildescr
-            res = self.cpu.get_float_value(deadframe, 0)
+            res = self.cpu.get_float_value(deadframe, None, 0)
             assert longlong.getrealfloat(res) == 42.5
 
     def test_execute_operations_in_env(self):


More information about the pypy-commit mailing list