[pypy-svn] r38080 - in pypy/branch/new-jit-codegen: dump test

arigo at codespeak.net arigo at codespeak.net
Wed Feb 7 17:09:13 CET 2007


Author: arigo
Date: Wed Feb  7 17:09:11 2007
New Revision: 38080

Modified:
   pypy/branch/new-jit-codegen/dump/rgenop.py
   pypy/branch/new-jit-codegen/test/rgenop_tests.py
Log:
Fixes, and a new test, for places with no initial value.


Modified: pypy/branch/new-jit-codegen/dump/rgenop.py
==============================================================================
--- pypy/branch/new-jit-codegen/dump/rgenop.py	(original)
+++ pypy/branch/new-jit-codegen/dump/rgenop.py	Wed Feb  7 17:09:11 2007
@@ -295,11 +295,15 @@
 
     def alloc_frame_place(self, kind, gv_initial_value=None):
         place = self.llbuilder.alloc_frame_place(kind, gv_initial_value)
+        if gv_initial_value is None:
+            s = 'None'
+        else:
+            s = self.rgenop.vname(gv_initial_value)
         self.dump("%s = %s.alloc_frame_place(%s, %s)" % (
             place,
             self.name,
             self.rgenop.kindtokenname(kind),
-            gv_initial_value and self.rgenop.vname(gv_initial_value)))
+            s))
         return place
 
     def genop_absorb_place(self, kind, place):

Modified: pypy/branch/new-jit-codegen/test/rgenop_tests.py
==============================================================================
--- pypy/branch/new-jit-codegen/test/rgenop_tests.py	(original)
+++ pypy/branch/new-jit-codegen/test/rgenop_tests.py	Wed Feb  7 17:09:11 2007
@@ -671,10 +671,13 @@
         def writer(base, value):
             if value > 5:
                 RGenOp.write_frame_place(lltype.Signed, base,
-                                         self.place, value * 7)
+                                         self.place1, value * 7)
+            RGenOp.write_frame_place(lltype.Signed, base,
+                                     self.place2, value * 10)
         self.writer = writer
-    def get_writer(self, place):
-        self.place = place
+    def get_writer(self, place1, place2):
+        self.place1 = place1
+        self.place2 = place2
         return llhelper(self.FUNC, self.writer)
 
 def make_write_frame_place(rgenop, get_writer):
@@ -687,11 +690,14 @@
 
     gv_base = builder.genop_get_frame_base()
     gv_k = rgenop.genconst(-100)
-    place = builder.alloc_frame_place(signed_kind, gv_initial_value=gv_k)
-    gv_writer = rgenop.constPrebuiltGlobal(get_writer(place))
+    place1 = builder.alloc_frame_place(signed_kind, gv_initial_value=gv_k)
+    place2 = builder.alloc_frame_place(signed_kind)
+    gv_writer = rgenop.constPrebuiltGlobal(get_writer(place1, place2))
     builder.genop_call(writertoken, gv_writer, [gv_base, gv_x])
-    gv_y = builder.genop_absorb_place(signed_kind, place)
-    builder.finish_and_return(sigtoken, gv_y)
+    gv_y = builder.genop_absorb_place(signed_kind, place1)
+    gv_z = builder.genop_absorb_place(signed_kind, place2)
+    gv_diff = builder.genop2("int_sub", gv_y, gv_z)
+    builder.finish_and_return(sigtoken, gv_diff)
     builder.end()
 
     return gv_f
@@ -1307,9 +1313,10 @@
         assert res == 60
 
     def test_write_frame_place_direct(self):
-        def get_writer(place):
+        def get_writer(place1, place2):
             fvw = FramePlaceWriter(self.RGenOp)
-            fvw.place = place
+            fvw.place1 = place1
+            fvw.place2 = place2
             writer_ptr = self.directtesthelper(fvw.FUNC, fvw.writer)
             return writer_ptr
 
@@ -1317,16 +1324,16 @@
         gv_callable = make_write_frame_place(rgenop, get_writer)
         fnptr = self.cast(gv_callable, 1)
         res = fnptr(3)
-        assert res == -100
+        assert res == -100 - 30
         res = fnptr(6)
-        assert res == 42
+        assert res == 42 - 60
 
     def test_write_frame_place_compile(self):
         fn = self.compile(get_write_frame_place_runner(self.RGenOp), [int])
         res = fn(-42)
-        assert res == -100
+        assert res == -100 - (-420)
         res = fn(606)
-        assert res == 4242
+        assert res == 4242 - 6060
 
     def test_read_frame_place_direct(self):
         def get_reader(place):



More information about the Pypy-commit mailing list