[pypy-svn] r52837 - in pypy/branch/jit-hotpath/pypy/jit/rainbow: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Sat Mar 22 21:11:13 CET 2008


Author: cfbolz
Date: Sat Mar 22 21:11:10 2008
New Revision: 52837

Modified:
   pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py
Log:
don't use negativity to encode information, use even/oddness


Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py	Sat Mar 22 21:11:10 2008
@@ -656,7 +656,7 @@
         assert isinstance(arg, flowmodel.Variable) or not check
         assert getattr(arg, 'concretetype', '?') is not lltype.Void
         if where is None:
-            where = self.free_green[self.current_block]
+            where = self.free_green[self.current_block] * 2
             self.free_green[self.current_block] += 1
             if verbose:
                 self.emit('# => g%d' % (where,))
@@ -665,8 +665,9 @@
 
     def green_position(self, arg):
         if isinstance(arg, flowmodel.Variable):
+            # greenvar_positions contains even numbers usually
             return self.greenvar_positions[arg]
-        return ~self.const_position(arg)
+        return self.const_position(arg) * 2 + 1
 
     def const_position(self, const):
         if const in self.const_positions:
@@ -1565,7 +1566,7 @@
         greens_v, reds_v = self.check_hp_hint_args(op)
         key = ()
         for i, v in enumerate(greens_v):
-            assert self.green_position(v) == i
+            assert self.green_position(v) == i * 2
             key += (v.concretetype,)
         for i, v in enumerate(reds_v):
             assert self.redvar_position(v) == i

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py	Sat Mar 22 21:11:10 2008
@@ -38,9 +38,9 @@
 
     def get_greenarg(self):
         i = self.load_2byte()
-        if i < 0:
-            return self.jitcode.constants[~i]
-        return CustomRepr('g%d' % i)
+        if i % 2:
+            return self.jitcode.constants[i // 2]
+        return CustomRepr('g%d' % (i // 2))
 
     def get_green_varargs(self):
         greenargs = []

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py	Sat Mar 22 21:11:10 2008
@@ -234,9 +234,9 @@
 
     def get_greenarg(self):
         i = self.load_2byte()
-        if i < 0:
-            return self.bytecode.constants[~i]
-        return self.local_green[i]
+        if i % 2:
+            return self.bytecode.constants[i // 2]
+        return self.local_green[i // 2]
 
     def get_green_varargs(self):
         greenargs = []

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py	Sat Mar 22 21:11:10 2008
@@ -391,9 +391,9 @@
 
     def get_greenarg(self):
         i = self.load_2byte()
-        if i < 0:
-            return self.frame.bytecode.constants[~i]
-        return self.frame.local_green[i]
+        if i % 2:
+            return self.frame.bytecode.constants[i // 2]
+        return self.frame.local_green[i // 2]
 
     def get_green_varargs(self):
         greenargs = []

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py	Sat Mar 22 21:11:10 2008
@@ -72,7 +72,7 @@
             return x + 1
         writer, jitcode = self.serialize(f, [int])
         assert jitcode.code == assemble(writer.interpreter,
-                                        "make_redbox", -1, 0,
+                                        "make_redbox", 1, 0,
                                         "red_int_add", 0, 1,
                                         "make_new_redvars", 1, 2,
                                         "red_return")
@@ -92,7 +92,7 @@
         writer, jitcode = self.serialize(f, [int, int, int])
         expected = assemble(writer.interpreter,
                             "green_int_is_true", 0,
-                            "green_goto_iftrue", 1, tlabel("true"),
+                            "green_goto_iftrue", 2, tlabel("true"),
                             "make_new_redvars", 1, 1,
                             "make_new_greenvars", 0,
                             label("return"),
@@ -118,7 +118,7 @@
         writer, jitcode = self.serialize(f, [int, int, int])
         expected = assemble(writer.interpreter,
                             "green_int_is_true", 0,
-                            "green_goto_iftrue", 1, tlabel("true"),
+                            "green_goto_iftrue", 2, tlabel("true"),
                             "make_new_redvars", 2, 0, 1,
                             "make_new_greenvars", 0,
                             label("sub"),
@@ -156,7 +156,7 @@
                             "make_new_redvars", 1, 2,
                             label("after"),
                             "local_merge", 0, -1,
-                            "make_redbox", -1, 0,
+                            "make_redbox", 1, 0,
                             "red_int_add", 1, 0,
                             "make_new_redvars", 1, 2,
                             "red_return",
@@ -181,11 +181,11 @@
             return r
         writer, jitcode = self.serialize(f, [int])
         expected = assemble(writer.interpreter,
-                            "make_redbox", -1, 0,
+                            "make_redbox", 1, 0,
                             "make_new_redvars", 2, 0, 1,
                             "make_new_greenvars", 0,
                             label("while"),
-                            "local_merge", 0, -1, 
+                            "local_merge", 0, 1, 
                             "red_int_is_true", 0,
                             "red_goto_iftrue", 2, tlabel("body"),
                             "make_new_redvars", 1, 0,
@@ -195,7 +195,7 @@
                             "make_new_redvars", 2, 0, 1,
                             "make_new_greenvars", 0,
                             "red_int_add", 1, 0,
-                            "make_redbox", -2, 0,
+                            "make_redbox", 3, 0,
                             "red_int_sub", 0, 3,
                             "make_new_redvars", 2, 2, 4,
                             "goto", tlabel("while"))
@@ -248,7 +248,7 @@
         writer, jitcode = self.serialize(f, [int])
         assert jitcode.code == assemble(writer.interpreter,
                                         "red_direct_call", 0, 1, 0, 0,
-                                        "make_redbox", -1, 0,
+                                        "make_redbox", 1, 0,
                                         "red_int_mul", 1, 2,
                                         "make_new_redvars", 1, 3,
                                         "red_return")
@@ -256,7 +256,7 @@
         assert len(jitcode.called_bytecodes) == 1
         called_jitcode = jitcode.called_bytecodes[0]
         assert called_jitcode.code == assemble(writer.interpreter,
-                                               "make_redbox", -1, 0,
+                                               "make_redbox", 1, 0,
                                                "red_int_add", 0, 1,
                                                "make_new_redvars", 1, 2,
                                                "red_return")
@@ -273,8 +273,8 @@
 
         writer, jitcode = self.serialize(ll_function, [int])
         assert jitcode.code == assemble(writer.interpreter,
-                                        "green_call", -1, 0, 1, 0,
-                                        "make_redbox", 1, 0,
+                                        "green_call", 1, 0, 1, 0,
+                                        "make_redbox", 2, 0,
                                         "make_new_redvars", 1, 0,
                                         "make_new_greenvars", 0,
                                         "red_return")
@@ -296,8 +296,8 @@
         assert jitcode.code == assemble(writer.interpreter,
                                         "yellow_direct_call", 0, 1, 0, 0,
                                         "yellow_retrieve_result",
-                                        "green_int_add", 0, -1,
-                                        "make_redbox", 1, 0,
+                                        "green_int_add", 0, 1,
+                                        "make_redbox", 2, 0,
                                         "make_new_redvars", 1, 1,
                                         "make_new_greenvars", 0,
                                         "red_return")
@@ -305,16 +305,16 @@
         assert len(jitcode.called_bytecodes) == 1
         called_jitcode = jitcode.called_bytecodes[0]
         assert called_jitcode.code == assemble(writer.interpreter,
-                                               "make_redbox", -1, 0,
+                                               "make_redbox", 1, 0,
                                                "red_int_gt", 0, 1,
                                                "red_goto_iftrue", 2, tlabel("true"),
                                                "make_new_redvars", 0,
-                                               "make_new_greenvars", 1, -2,
+                                               "make_new_greenvars", 1, 3,
                                                label("return"),
                                                "yellow_return",
                                                label("true"),
                                                "make_new_redvars", 0,
-                                               "make_new_greenvars", 1, -3,
+                                               "make_new_greenvars", 1, 5,
                                                "goto", tlabel("return")
                                                )
         assert not called_jitcode.is_portal



More information about the Pypy-commit mailing list