[pypy-svn] r53656 - in pypy/branch/jit-hotpath/pypy/jit: rainbow rainbow/test timeshifter

antocuni at codespeak.net antocuni at codespeak.net
Thu Apr 10 15:10:22 CEST 2008


Author: antocuni
Date: Thu Apr 10 15:10:21 2008
New Revision: 53656

Modified:
   pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py
   pypy/branch/jit-hotpath/pypy/jit/rainbow/typesystem.py
   pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py
Log:
make test_ptrequality and test_green_ptrequality pass



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	Thu Apr 10 15:10:21 2008
@@ -1083,6 +1083,11 @@
     def opimpl_red_ooisnull(self, ptrbox):
         return rtimeshift.genptrnonzero(self.jitstate, ptrbox, True)
 
+    @arguments("red", "red", returns="red")
+    def opimpl_red_oois(self, ptrbox1, ptrbox2):
+        return rtimeshift.genptreq(self.jitstate, ptrbox1,
+                                   ptrbox2, False)
+
 
 class DebugTrace(object):
     def __init__(self, *args):

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_interpreter.py	Thu Apr 10 15:10:21 2008
@@ -2334,5 +2334,3 @@
     test_compile_time_const_tuple = _skip    # needs vdict
     test_green_char_at_merge = _skip
     test_self_referential_structures = _skip
-    test_ptrequality = _skip
-    test_green_ptrequality = _skip

Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/typesystem.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/typesystem.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/typesystem.py	Thu Apr 10 15:10:21 2008
@@ -38,6 +38,12 @@
     def genop_ptr_nonzero(self, builder, argbox, gv_addr):
         return builder.genop1("ptr_nonzero", gv_addr)
 
+    def genop_ptr_eq(self, builder, gv_addr0, gv_addr1):
+        return builder.genop2("ptr_eq", gv_addr0, gv_addr1)
+
+    def genop_ptr_ne(self, builder, gv_addr0, gv_addr1):
+        return builder.genop2("ptr_ne", gv_addr0, gv_addr1)
+
     def get_FuncType(self, ARGS, RESULT):
         FUNCTYPE = lltype.FuncType(ARGS, RESULT)
         FUNCPTRTYPE = lltype.Ptr(FUNCTYPE)
@@ -60,6 +66,13 @@
     def genop_ptr_nonzero(self, builder, argbox, gv_addr):
         return builder.genop_oononnull(gv_addr)
 
+    def genop_ptr_eq(self, builder, gv_addr0, gv_addr1):
+        return builder.genop2("oois", gv_addr0, gv_addr1)
+
+    def genop_ptr_ne(self, builder, gv_addr0, gv_addr1):
+        assert False, 'TODO'
+        #return builder.genop2("ptr_ne", gv_addr0, gv_addr1)
+
     def get_FuncType(self, ARGS, RESULT):
         FUNCTYPE = ootype.StaticMethod(ARGS, RESULT)
         return FUNCTYPE, FUNCTYPE

Modified: pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/timeshifter/rtimeshift.py	Thu Apr 10 15:10:21 2008
@@ -255,12 +255,12 @@
     return boolbox
 
 def genptreq(jitstate, argbox0, argbox1, reverse):
-    assert isinstance(argbox0, rvalue.PtrRedBox)
-    assert isinstance(argbox1, rvalue.PtrRedBox)
+    assert isinstance(argbox0, rvalue.AbstractPtrRedBox)
+    assert isinstance(argbox1, rvalue.AbstractPtrRedBox)
     builder = jitstate.curbuilder
     if argbox0.is_constant() and argbox1.is_constant():
-        addr0 = rvalue.ll_getvalue(argbox0, llmemory.Address)
-        addr1 = rvalue.ll_getvalue(argbox1, llmemory.Address)
+        addr0 = rvalue.ll_getvalue(argbox0, jitstate.ts.ROOT_TYPE)
+        addr1 = rvalue.ll_getvalue(argbox1, jitstate.ts.ROOT_TYPE)
         return rvalue.ll_fromvalue(jitstate, (addr0 == addr1) ^ reverse)
     if argbox0.content is not None:
         resultbox = argbox0.content.op_ptreq(jitstate, argbox1, reverse)
@@ -273,9 +273,9 @@
     gv_addr0 = argbox0.getgenvar(jitstate)
     gv_addr1 = argbox1.getgenvar(jitstate)
     if reverse:
-        gv_res = builder.genop2("ptr_ne", gv_addr0, gv_addr1)
+        gv_res = jitstate.ts.genop_ptr_ne(builder, gv_addr0, gv_addr1)
     else:
-        gv_res = builder.genop2("ptr_eq", gv_addr0, gv_addr1)
+        gv_res = jitstate.ts.genop_ptr_eq(builder, gv_addr0, gv_addr1)
     boolbox = rvalue.BoolRedBox(gv_res)
     boolbox.iftrue.append(booleffect.PtrEqualEffect(argbox0, argbox1, reverse))
     return boolbox


More information about the pypy-svn mailing list