[pypy-commit] pypy result-in-resops: Change order in getarrayitem_{raw/gc} and new_array, so descr is the last.
fijal
noreply at buildbot.pypy.org
Fri Jul 20 10:47:49 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: result-in-resops
Changeset: r56246:4547d655ecf0
Date: 2012-07-19 23:54 +0200
http://bitbucket.org/pypy/pypy/changeset/4547d655ecf0/
Log: Change order in getarrayitem_{raw/gc} and new_array, so descr is the
last. Simplifies some other things
diff --git a/pypy/jit/codewriter/jtransform.py b/pypy/jit/codewriter/jtransform.py
--- a/pypy/jit/codewriter/jtransform.py
+++ b/pypy/jit/codewriter/jtransform.py
@@ -536,7 +536,7 @@
# XXX only strings or simple arrays for now
ARRAY = op.args[0].value
arraydescr = self.cpu.arraydescrof(ARRAY)
- return SpaceOperation('new_array', [arraydescr, op.args[2]],
+ return SpaceOperation('new_array', [op.args[2], arraydescr],
op.result)
def rewrite_op_free(self, op):
@@ -569,7 +569,7 @@
arraydescr = self.cpu.arraydescrof(ARRAY)
kind = getkind(op.result.concretetype)
return SpaceOperation('getarrayitem_%s_%s' % (ARRAY._gckind, kind[0]),
- [op.args[0], arraydescr, op.args[1]],
+ [op.args[0], op.args[1], arraydescr],
op.result)
def rewrite_op_setarrayitem(self, op):
@@ -1459,7 +1459,7 @@
if pure:
extra = 'pure_' + extra
op = SpaceOperation('getarrayitem_gc_%s' % extra,
- [args[0], arraydescr, v_index], op.result)
+ [args[0], v_index, arraydescr], op.result)
return extraop + [op]
def do_fixed_list_getitem_foldable(self, op, args, arraydescr):
diff --git a/pypy/jit/codewriter/test/test_flatten.py b/pypy/jit/codewriter/test/test_flatten.py
--- a/pypy/jit/codewriter/test/test_flatten.py
+++ b/pypy/jit/codewriter/test/test_flatten.py
@@ -687,9 +687,9 @@
array[2] = 5
return array[2] + len(array)
self.encoding_test(f, [], """
- new_array <Descr>, $5 -> %r0
+ new_array $5, <Descr> -> %r0
setarrayitem_gc_i %r0, <Descr>, $2, $5
- getarrayitem_gc_i %r0, <Descr>, $2 -> %i0
+ getarrayitem_gc_i %r0, $2, <Descr> -> %i0
arraylen_gc %r0, <Descr> -> %i1
int_add %i0, %i1 -> %i2
int_return %i2
@@ -703,7 +703,7 @@
x = array[2]
return len(array)
self.encoding_test(f, [], """
- new_array <Descr>, $5 -> %r0
+ new_array $5, <Descr> -> %r0
arraylen_gc %r0, <Descr> -> %i0
int_return %i0
""", transform=True)
diff --git a/pypy/jit/codewriter/test/test_list.py b/pypy/jit/codewriter/test/test_list.py
--- a/pypy/jit/codewriter/test/test_list.py
+++ b/pypy/jit/codewriter/test/test_list.py
@@ -112,28 +112,28 @@
builtin_test('list.getitem/NONNEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
- getarrayitem_gc_i %r0, <ArrayDescr>, %i0 -> %i1
+ getarrayitem_gc_i %r0, %i0, <ArrayDescr> -> %i1
""")
builtin_test('list.getitem/NEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
-live-
check_neg_index %r0, <ArrayDescr>, %i0 -> %i1
- getarrayitem_gc_i %r0, <ArrayDescr>, %i1 -> %i2
+ getarrayitem_gc_i %r0, %i1, <ArrayDescr> -> %i2
""")
def test_fixed_getitem_foldable():
builtin_test('list.getitem_foldable/NONNEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
- getarrayitem_gc_pure_i %r0, <ArrayDescr>, %i0 -> %i1
+ getarrayitem_gc_pure_i %r0, %i0, <ArrayDescr> -> %i1
""")
builtin_test('list.getitem_foldable/NEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Signed, """
-live-
check_neg_index %r0, <ArrayDescr>, %i0 -> %i1
- getarrayitem_gc_pure_i %r0, <ArrayDescr>, %i1 -> %i2
+ getarrayitem_gc_pure_i %r0, %i1, <ArrayDescr> -> %i2
""")
def test_fixed_setitem():
diff --git a/pypy/jit/metainterp/blackhole.py b/pypy/jit/metainterp/blackhole.py
--- a/pypy/jit/metainterp/blackhole.py
+++ b/pypy/jit/metainterp/blackhole.py
@@ -1110,29 +1110,29 @@
return cpu.bh_call_v(jitcode.get_fnaddr_as_int(), jitcode.calldescr,
args_i, args_r, args_f)
- @arguments("cpu", "d", "i", returns="r")
- def bhimpl_new_array(cpu, arraydescr, length):
+ @arguments("cpu", "i", "d", returns="r")
+ def bhimpl_new_array(cpu, length, arraydescr):
return cpu.bh_new_array(arraydescr, length)
- @arguments("cpu", "r", "d", "i", returns="i")
- def bhimpl_getarrayitem_gc_i(cpu, array, arraydescr, index):
+ @arguments("cpu", "r", "i", "d", returns="i")
+ def bhimpl_getarrayitem_gc_i(cpu, array, index, arraydescr):
return cpu.bh_getarrayitem_gc_i(arraydescr, array, index)
- @arguments("cpu", "r", "d", "i", returns="r")
- def bhimpl_getarrayitem_gc_r(cpu, array, arraydescr, index):
+ @arguments("cpu", "r", "i", "d", returns="r")
+ def bhimpl_getarrayitem_gc_r(cpu, array, index, arraydescr):
return cpu.bh_getarrayitem_gc_r(arraydescr, array, index)
- @arguments("cpu", "r", "d", "i", returns="f")
- def bhimpl_getarrayitem_gc_f(cpu, array, arraydescr, index):
+ @arguments("cpu", "r", "i", "d", returns="f")
+ def bhimpl_getarrayitem_gc_f(cpu, array, index, arraydescr):
return cpu.bh_getarrayitem_gc_f(arraydescr, array, index)
bhimpl_getarrayitem_gc_pure_i = bhimpl_getarrayitem_gc_i
bhimpl_getarrayitem_gc_pure_r = bhimpl_getarrayitem_gc_r
bhimpl_getarrayitem_gc_pure_f = bhimpl_getarrayitem_gc_f
- @arguments("cpu", "i", "d", "i", returns="i")
- def bhimpl_getarrayitem_raw_i(cpu, array, arraydescr, index):
+ @arguments("cpu", "i", "i", "d", returns="i")
+ def bhimpl_getarrayitem_raw_i(cpu, array, index, arraydescr):
return cpu.bh_getarrayitem_raw_i(arraydescr, array, index)
- @arguments("cpu", "i", "d", "i", returns="f")
- def bhimpl_getarrayitem_raw_f(cpu, array, arraydescr, index):
+ @arguments("cpu", "i", "i", "d", returns="f")
+ def bhimpl_getarrayitem_raw_f(cpu, array, index, arraydescr):
return cpu.bh_getarrayitem_raw_f(arraydescr, array, index)
@arguments("cpu", "r", "d", "i", "i")
diff --git a/pypy/jit/metainterp/executor.py b/pypy/jit/metainterp/executor.py
--- a/pypy/jit/metainterp/executor.py
+++ b/pypy/jit/metainterp/executor.py
@@ -8,7 +8,7 @@
from pypy.jit.metainterp.history import BoxInt, BoxPtr, BoxFloat, check_descr
from pypy.jit.metainterp.history import INT, REF, FLOAT, VOID, AbstractDescr
from pypy.jit.metainterp import resoperation
-from pypy.jit.metainterp.resoperation import rop
+from pypy.jit.metainterp.resoperation import rop, ResOperation
from pypy.jit.metainterp.blackhole import BlackholeInterpreter, NULL
from pypy.jit.codewriter import longlong
@@ -300,7 +300,8 @@
# find which list to store the operation in, based on num_args
num_args = resoperation.oparity[value]
withdescr = resoperation.opwithdescr[value]
- dictkey = num_args, withdescr
+ optp = resoperation.optp[value]
+ dictkey = num_args, withdescr, optp
if dictkey not in execute_by_num_args:
execute_by_num_args[dictkey] = [None] * (rop._LAST+1)
execute = execute_by_num_args[dictkey]
@@ -369,9 +370,14 @@
# Make a wrapper for 'func'. The func is a simple bhimpl_xxx function
# from the BlackholeInterpreter class. The wrapper is a new function
# that receives and returns boxed values.
- for argtype in func.argtypes:
+ has_descr = False
+ for i, argtype in enumerate(func.argtypes):
if argtype not in ('i', 'r', 'f', 'd', 'cpu'):
return None
+ if argtype == 'd':
+ if i != len(func.argtypes) - 1:
+ raise AssertionError("Descr should be the last one")
+ has_descr = True
if list(func.argtypes).count('d') > 1:
return None
if func.resulttype not in ('i', 'r', 'f', None):
@@ -379,25 +385,27 @@
argtypes = unrolling_iterable(func.argtypes)
resulttype = func.resulttype
#
- def do(cpu, _, *argboxes):
+ def do(cpu, _, *args):
newargs = ()
+ orig_args = args
for argtype in argtypes:
if argtype == 'cpu':
value = cpu
elif argtype == 'd':
- value = argboxes[-1]
+ value = args[-1]
assert isinstance(value, AbstractDescr)
- argboxes = argboxes[:-1]
+ args = args[:-1]
else:
- argbox = argboxes[0]
- argboxes = argboxes[1:]
- if argtype == 'i': value = argbox.getint()
- elif argtype == 'r': value = argbox.getref_base()
- elif argtype == 'f': value = argbox.getfloatstorage()
+ arg = args[0]
+ args = args[1:]
+ if argtype == 'i': value = arg.getint()
+ elif argtype == 'r': value = arg.getref_base()
+ elif argtype == 'f': value = arg.getfloatstorage()
newargs = newargs + (value,)
- assert not argboxes
+ assert not args
#
result = func(*newargs)
+ ResOperation(opnum, orig_args, result, )
#
if resulttype == 'i': return BoxInt(result)
if resulttype == 'r': return BoxPtr(result)
@@ -407,19 +415,19 @@
do.func_name = 'do_' + name
return do
-def get_execute_funclist(num_args, withdescr):
+def get_execute_funclist(num_args, withdescr, tp):
# workaround, similar to the next one
- return EXECUTE_BY_NUM_ARGS[num_args, withdescr]
+ return EXECUTE_BY_NUM_ARGS[num_args, withdescr, tp]
get_execute_funclist._annspecialcase_ = 'specialize:memo'
-def get_execute_function(opnum, num_args, withdescr):
+def get_execute_function(opnum, num_args, withdescr, tp):
# workaround for an annotation limitation: putting this code in
# a specialize:memo function makes sure the following line is
# constant-folded away. Only works if opnum and num_args are
# constants, of course.
- func = EXECUTE_BY_NUM_ARGS[num_args, withdescr][opnum]
- assert func is not None, "EXECUTE_BY_NUM_ARGS[%s, %s][%s]" % (
- num_args, withdescr, resoperation.opname[opnum])
+ func = EXECUTE_BY_NUM_ARGS[num_args, withdescr, tp][opnum]
+ assert func is not None, "EXECUTE_BY_NUM_ARGS[%s, %s, %s][%s]" % (
+ num_args, withdescr, tp, resoperation.opname[opnum])
return func
get_execute_function._annspecialcase_ = 'specialize:memo'
@@ -429,18 +437,19 @@
has_descr._annspecialcase_ = 'specialize:memo'
-def execute(cpu, metainterp, opnum, descr, *argboxes):
+def execute(cpu, metainterp, opnum, descr, *args):
# only for opnums with a fixed arity
- num_args = len(argboxes)
+ num_args = len(args)
withdescr = has_descr(opnum)
+ tp = resoperation.optp[opnum]
if withdescr:
check_descr(descr)
- argboxes = argboxes + (descr,)
+ args = args + (descr,)
else:
assert descr is None
- func = get_execute_function(opnum, num_args, withdescr)
- return func(cpu, metainterp, *argboxes) # note that the 'argboxes' tuple
- # optionally ends with the descr
+ func = get_execute_function(opnum, num_args, withdescr, tp)
+ return func(cpu, metainterp, *args) # note that the 'args' tuple
+ # optionally ends with the descr
execute._annspecialcase_ = 'specialize:arg(2)'
def execute_varargs(cpu, metainterp, opnum, argboxes, descr):
diff --git a/pypy/jit/metainterp/heapcache.py b/pypy/jit/metainterp/heapcache.py
--- a/pypy/jit/metainterp/heapcache.py
+++ b/pypy/jit/metainterp/heapcache.py
@@ -71,7 +71,9 @@
self._escape(valuebox)
# GETFIELD_GC, MARK_OPAQUE_PTR, PTR_EQ, and PTR_NE don't escape their
# arguments
- elif (opnum != rop.GETFIELD_GC and
+ elif (opnum != rop.GETFIELD_GC_i and
+ opnum != rop.GETFIELD_GC_f and
+ opnum != rop.GETFIELD_GC_p and
opnum != rop.MARK_OPAQUE_PTR and
opnum != rop.PTR_EQ and
opnum != rop.PTR_NE):
diff --git a/pypy/jit/metainterp/history.py b/pypy/jit/metainterp/history.py
--- a/pypy/jit/metainterp/history.py
+++ b/pypy/jit/metainterp/history.py
@@ -8,9 +8,8 @@
from pypy.conftest import option
-from pypy.jit.metainterp.resoperation import ResOperation, rop
+from pypy.jit.metainterp.resoperation import ResOperation, rop, AbstractValue
from pypy.jit.codewriter import heaptracker, longlong
-from pypy.rlib.objectmodel import compute_identity_hash
import weakref
# ____________________________________________________________
@@ -84,59 +83,6 @@
compute_unique_id(box))
-class AbstractValue(object):
- __slots__ = ()
-
- def getint(self):
- raise NotImplementedError
-
- def getfloatstorage(self):
- raise NotImplementedError
-
- def getfloat(self):
- return longlong.getrealfloat(self.getfloatstorage())
-
- def getlonglong(self):
- assert longlong.supports_longlong
- return self.getfloatstorage()
-
- def getref_base(self):
- raise NotImplementedError
-
- def getref(self, TYPE):
- raise NotImplementedError
- getref._annspecialcase_ = 'specialize:arg(1)'
-
- def _get_hash_(self):
- return compute_identity_hash(self)
-
- def clonebox(self):
- raise NotImplementedError
-
- def constbox(self):
- raise NotImplementedError
-
- def nonconstbox(self):
- raise NotImplementedError
-
- def getaddr(self):
- raise NotImplementedError
-
- def sort_key(self):
- raise NotImplementedError
-
- def nonnull(self):
- raise NotImplementedError
-
- def repr_rpython(self):
- return '%s' % self
-
- def _get_str(self):
- raise NotImplementedError
-
- def same_box(self, other):
- return self is other
-
class AbstractDescr(AbstractValue):
__slots__ = ()
diff --git a/pypy/jit/metainterp/pyjitpl.py b/pypy/jit/metainterp/pyjitpl.py
--- a/pypy/jit/metainterp/pyjitpl.py
+++ b/pypy/jit/metainterp/pyjitpl.py
@@ -412,14 +412,14 @@
## def opimpl_subclassof(self, box1, box2):
## self.execute(rop.SUBCLASSOF, box1, box2)
- @arguments("descr", "box")
- def opimpl_new_array(self, itemsizedescr, lengthbox):
+ @arguments("box", "descr")
+ def opimpl_new_array(self, lengthbox, itemsizedescr):
resbox = self.execute_with_descr(rop.NEW_ARRAY, itemsizedescr, lengthbox)
self.metainterp.heapcache.new_array(resbox, lengthbox)
return resbox
@specialize.arg(1)
- def _do_getarrayitem_gc_any(self, op, arraybox, arraydescr, indexbox):
+ def _do_getarrayitem_gc_any(self, op, arraybox, indexbox, arraydescr):
tobox = self.metainterp.heapcache.getarrayitem(
arraybox, arraydescr, indexbox)
if tobox:
@@ -434,25 +434,27 @@
arraybox, arraydescr, indexbox, resbox)
return resbox
- @arguments("box", "descr", "box")
- def _opimpl_getarrayitem_gc_any(self, arraybox, arraydescr, indexbox):
- return self._do_getarrayitem_gc_any(rop.GETARRAYITEM_GC, arraybox, arraydescr, indexbox)
+ @arguments("box", "box", "descr")
+ def _opimpl_getarrayitem_gc_any(self, arraybox, indexbox, arraydescr):
+ return self._do_getarrayitem_gc_any(rop.GETARRAYITEM_GC, arraybox,
+ indexbox, arraydescr)
opimpl_getarrayitem_gc_i = _opimpl_getarrayitem_gc_any
opimpl_getarrayitem_gc_r = _opimpl_getarrayitem_gc_any
opimpl_getarrayitem_gc_f = _opimpl_getarrayitem_gc_any
- @arguments("box", "descr", "box")
- def _opimpl_getarrayitem_raw_any(self, arraybox, arraydescr, indexbox):
+ @arguments("box", "box", "descr")
+ def _opimpl_getarrayitem_raw_any(self, arraybox, indexbox, arraydescr):
return self.execute_with_descr(rop.GETARRAYITEM_RAW,
arraydescr, arraybox, indexbox)
opimpl_getarrayitem_raw_i = _opimpl_getarrayitem_raw_any
opimpl_getarrayitem_raw_f = _opimpl_getarrayitem_raw_any
- @arguments("box", "descr", "box")
- def _opimpl_getarrayitem_gc_pure_any(self, arraybox, arraydescr, indexbox):
- return self._do_getarrayitem_gc_any(rop.GETARRAYITEM_GC_PURE, arraybox, arraydescr, indexbox)
+ @arguments("box", "box", "descr")
+ def _opimpl_getarrayitem_gc_pure_any(self, arraybox, indexbox, arraydescr):
+ return self._do_getarrayitem_gc_any(rop.GETARRAYITEM_GC_PURE, arraybox,
+ indexbox, arraydescr)
opimpl_getarrayitem_gc_pure_i = _opimpl_getarrayitem_gc_pure_any
opimpl_getarrayitem_gc_pure_r = _opimpl_getarrayitem_gc_pure_any
@@ -505,7 +507,7 @@
sizebox):
sbox = self.opimpl_new(structdescr)
self._opimpl_setfield_gc_any(sbox, lengthdescr, sizebox)
- abox = self.opimpl_new_array(arraydescr, sizebox)
+ abox = self.opimpl_new_array(sizebox, arraydescr)
self._opimpl_setfield_gc_any(sbox, itemsdescr, abox)
return sbox
@@ -514,7 +516,7 @@
arraydescr, sizehintbox):
sbox = self.opimpl_new(structdescr)
self._opimpl_setfield_gc_any(sbox, lengthdescr, history.CONST_FALSE)
- abox = self.opimpl_new_array(arraydescr, sizehintbox)
+ abox = self.opimpl_new_array(sizehintbox, arraydescr)
self._opimpl_setfield_gc_any(sbox, itemsdescr, abox)
return sbox
@@ -1734,6 +1736,7 @@
@specialize.arg(1)
def execute_and_record_varargs(self, opnum, argboxes, descr=None):
+ xxxx
history.check_descr(descr)
# execute the operation
profiler = self.staticdata.profiler
diff --git a/pypy/jit/metainterp/resoperation.py b/pypy/jit/metainterp/resoperation.py
--- a/pypy/jit/metainterp/resoperation.py
+++ b/pypy/jit/metainterp/resoperation.py
@@ -1,6 +1,8 @@
from pypy.rlib.objectmodel import we_are_translated, specialize
from pypy.rpython.lltypesystem.llmemory import GCREF
from pypy.rpython.lltypesystem.lltype import typeOf
+from pypy.jit.codewriter import longlong
+from pypy.rlib.objectmodel import compute_identity_hash
@specialize.arg(0)
def ResOperation(opnum, args, result, descr=None):
@@ -15,8 +17,62 @@
op.setdescr(descr)
return op
+class AbstractValue(object):
+ __slots__ = ()
-class AbstractResOp(object):
+ def getint(self):
+ raise NotImplementedError
+
+ def getfloatstorage(self):
+ raise NotImplementedError
+
+ def getfloat(self):
+ return longlong.getrealfloat(self.getfloatstorage())
+
+ def getlonglong(self):
+ assert longlong.supports_longlong
+ return self.getfloatstorage()
+
+ def getref_base(self):
+ raise NotImplementedError
+
+ def getref(self, TYPE):
+ raise NotImplementedError
+ getref._annspecialcase_ = 'specialize:arg(1)'
+
+ def _get_hash_(self):
+ return compute_identity_hash(self)
+
+ # XXX the interface below has to be revisited
+
+ def clonebox(self):
+ raise NotImplementedError
+
+ def constbox(self):
+ raise NotImplementedError
+
+ def nonconstbox(self):
+ raise NotImplementedError
+
+ def getaddr(self):
+ raise NotImplementedError
+
+ def sort_key(self):
+ raise NotImplementedError
+
+ def nonnull(self):
+ raise NotImplementedError
+
+ def repr_rpython(self):
+ return '%s' % self
+
+ def _get_str(self):
+ raise NotImplementedError
+
+ def same_box(self, other):
+ return self is other
+
+class AbstractResOp(AbstractValue):
"""The central ResOperation class, representing one operation."""
# debug
@@ -176,15 +232,6 @@
return False # for tests
return opboolresult[opnum]
- def getint(self):
- raise NotImplementedError
-
- def getfloat(self):
- raise NotImplementedError
-
- def getpointer(self):
- raise NotImplementedError
-
class ResOpNone(object):
_mixin_ = True
@@ -205,10 +252,11 @@
_mixin_ = True
def __init__(self, floatval):
- assert isinstance(floatval, float)
+ #assert isinstance(floatval, float)
+ # XXX not sure between float or float storage
self.floatval = floatval
- def getfloat(self):
+ def getfloatstorage(self):
return self.floatval
class ResOpPointer(object):
@@ -218,7 +266,7 @@
assert typeOf(pval) == GCREF
self.pval = pval
- def getpointer(self):
+ def getref_base(self):
return self.pval
# ===================
@@ -585,7 +633,7 @@
oparity = [] # mapping numbers to the arity of the operation or -1
opwithdescr = [] # mapping numbers to a flag "takes a descr"
opboolresult= [] # mapping numbers to a flag "returns a boolean"
-
+optp = [] # mapping numbers to typename of returnval 'i', 'p', 'N' or 'f'
def setup(debug_print=False):
i = 0
@@ -604,9 +652,8 @@
if not basename.startswith('_'):
clss = create_classes_for_op(basename, i, arity, withdescr, tp)
else:
- clss = []
- setattr(rop, basename, i)
- for cls, name in clss:
+ clss = [(None, basename, None)]
+ for cls, name, tp in clss:
if debug_print:
print '%30s = %d' % (name, i)
opname[i] = name
@@ -616,6 +663,7 @@
oparity.append(arity)
opwithdescr.append(withdescr)
opboolresult.append(boolresult)
+ optp.append(tp)
assert (len(opclasses)==len(oparity)==len(opwithdescr)
==len(opboolresult))
@@ -662,14 +710,14 @@
cls_name = '%s_OP_%s' % (name, tp)
bases = (get_base_class(mixin, tpmixin[tp], baseclass),)
dic = {'opnum': opnum}
- res.append((type(cls_name, bases, dic), name + '_' + tp))
+ res.append((type(cls_name, bases, dic), name + '_' + tp, tp))
opnum += 1
return res
else:
cls_name = '%s_OP' % name
bases = (get_base_class(mixin, tpmixin[tp], baseclass),)
dic = {'opnum': opnum}
- return [(type(cls_name, bases, dic), name)]
+ return [(type(cls_name, bases, dic), name, tp)]
setup(__name__ == '__main__') # print out the table when run directly
del _oplist
diff --git a/pypy/jit/metainterp/test/test_resoperation.py b/pypy/jit/metainterp/test/test_resoperation.py
--- a/pypy/jit/metainterp/test/test_resoperation.py
+++ b/pypy/jit/metainterp/test/test_resoperation.py
@@ -68,7 +68,7 @@
op = rop.ResOperation(rop.rop.CALL_p, ['a', 'b'],
lltype.nullptr(llmemory.GCREF.TO), descr=mydescr)
assert op.getarglist() == ['a', 'b']
- assert not op.getpointer()
+ assert not op.getref_base()
assert op.getdescr() is mydescr
def test_can_malloc():
More information about the pypy-commit
mailing list