[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