[pypy-svn] r67257 - in pypy/branch/pyjitpl5-less-is_oo/pypy/jit: backend/llgraph backend/test backend/x86/test metainterp
antocuni at codespeak.net
antocuni at codespeak.net
Thu Aug 27 18:29:55 CEST 2009
Author: antocuni
Date: Thu Aug 27 18:29:54 2009
New Revision: 67257
Modified:
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/llimpl.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/runner.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/runner_test.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/test_ll_random.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/x86/test/test_runner.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/compile.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/history.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/pyjitpl.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/typesystem.py
pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/warmspot.py
Log:
make history.getkind returning 'ref' instead of 'ptr' or 'obj'; fix a lot of
places that used 'p' instead of history.PTR to use the new history.REF instead
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/llimpl.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/llimpl.py Thu Aug 27 18:29:54 2009
@@ -8,7 +8,7 @@
from pypy.objspace.flow.model import Variable, Constant
from pypy.annotation import model as annmodel
from pypy.jit.metainterp.history import (ConstInt, ConstPtr, ConstAddr, ConstObj,
- BoxInt, BoxPtr, BoxObj)
+ BoxInt, BoxPtr, BoxObj, REF)
from pypy.rpython.lltypesystem import lltype, llmemory, rclass, rstr
from pypy.rpython.ootypesystem import ootype
from pypy.rpython.module.support import LLSupport, OOSupport
@@ -83,56 +83,56 @@
'uint_xor' : (('int', 'int'), 'int'),
'uint_rshift' : (('int', 'int'), 'int'),
'same_as' : (('int',), 'int'), # could also be ptr=>ptr
- 'new_with_vtable' : (('ptr',), 'ptr'),
- 'new' : ((), 'ptr'),
- 'new_array' : (('int',), 'ptr'),
- 'oononnull' : (('ptr',), 'bool'),
- 'ooisnull' : (('ptr',), 'bool'),
- 'oois' : (('ptr', 'ptr'), 'bool'),
- 'ooisnot' : (('ptr', 'ptr'), 'bool'),
- 'instanceof' : (('ptr',), 'bool'),
- 'subclassof' : (('ptr', 'ptr'), 'bool'),
- 'setfield_gc' : (('ptr', 'intorptr'), None),
- 'getfield_gc' : (('ptr',), 'intorptr'),
- 'getfield_gc_pure': (('ptr',), 'intorptr'),
- 'setfield_raw' : (('ptr', 'intorptr'), None),
- 'getfield_raw' : (('ptr',), 'intorptr'),
- 'getfield_raw_pure': (('ptr',), 'intorptr'),
- 'setarrayitem_gc' : (('ptr', 'int', 'intorptr'), None),
- 'getarrayitem_gc' : (('ptr', 'int'), 'intorptr'),
- 'getarrayitem_gc_pure' : (('ptr', 'int'), 'intorptr'),
- 'arraylen_gc' : (('ptr',), 'int'),
- 'call' : (('ptr', 'varargs'), 'intorptr'),
- 'call_pure' : (('ptr', 'varargs'), 'intorptr'),
+ 'new_with_vtable' : (('ref',), 'ref'),
+ 'new' : ((), 'ref'),
+ 'new_array' : (('int',), 'ref'),
+ 'oononnull' : (('ref',), 'bool'),
+ 'ooisnull' : (('ref',), 'bool'),
+ 'oois' : (('ref', 'ref'), 'bool'),
+ 'ooisnot' : (('ref', 'ref'), 'bool'),
+ 'instanceof' : (('ref',), 'bool'),
+ 'subclassof' : (('ref', 'ref'), 'bool'),
+ 'setfield_gc' : (('ref', 'intorptr'), None),
+ 'getfield_gc' : (('ref',), 'intorptr'),
+ 'getfield_gc_pure': (('ref',), 'intorptr'),
+ 'setfield_raw' : (('ref', 'intorptr'), None),
+ 'getfield_raw' : (('ref',), 'intorptr'),
+ 'getfield_raw_pure': (('ref',), 'intorptr'),
+ 'setarrayitem_gc' : (('ref', 'int', 'intorptr'), None),
+ 'getarrayitem_gc' : (('ref', 'int'), 'intorptr'),
+ 'getarrayitem_gc_pure' : (('ref', 'int'), 'intorptr'),
+ 'arraylen_gc' : (('ref',), 'int'),
+ 'call' : (('ref', 'varargs'), 'intorptr'),
+ 'call_pure' : (('ref', 'varargs'), 'intorptr'),
'oosend' : (('varargs',), 'intorptr'),
'oosend_pure' : (('varargs',), 'intorptr'),
'guard_true' : (('bool',), None),
'guard_false' : (('bool',), None),
'guard_value' : (('int', 'int'), None),
- 'guard_class' : (('ptr', 'ptr'), None),
+ 'guard_class' : (('ref', 'ref'), None),
'guard_no_exception' : ((), None),
- 'guard_exception' : (('ptr',), 'ptr'),
+ 'guard_exception' : (('ref',), 'ref'),
'guard_no_overflow' : ((), None),
'guard_overflow' : ((), None),
- 'newstr' : (('int',), 'ptr'),
- 'strlen' : (('ptr',), 'int'),
- 'strgetitem' : (('ptr', 'int'), 'int'),
- 'strsetitem' : (('ptr', 'int', 'int'), None),
- 'newunicode' : (('int',), 'ptr'),
- 'unicodelen' : (('ptr',), 'int'),
- 'unicodegetitem' : (('ptr', 'int'), 'int'),
- 'unicodesetitem' : (('ptr', 'int', 'int'), 'int'),
- 'cast_ptr_to_int' : (('ptr',), 'int'),
- 'cast_int_to_ptr' : (('int',), 'ptr'),
- 'debug_merge_point': (('ptr',), None),
- #'getitem' : (('void', 'ptr', 'int'), 'int'),
- #'setitem' : (('void', 'ptr', 'int', 'int'), None),
- #'newlist' : (('void', 'varargs'), 'ptr'),
- #'append' : (('void', 'ptr', 'int'), None),
- #'insert' : (('void', 'ptr', 'int', 'int'), None),
- #'pop' : (('void', 'ptr',), 'int'),
- #'len' : (('void', 'ptr',), 'int'),
- #'listnonzero' : (('void', 'ptr',), 'int'),
+ 'newstr' : (('int',), 'ref'),
+ 'strlen' : (('ref',), 'int'),
+ 'strgetitem' : (('ref', 'int'), 'int'),
+ 'strsetitem' : (('ref', 'int', 'int'), None),
+ 'newunicode' : (('int',), 'ref'),
+ 'unicodelen' : (('ref',), 'int'),
+ 'unicodegetitem' : (('ref', 'int'), 'int'),
+ 'unicodesetitem' : (('ref', 'int', 'int'), 'int'),
+ 'cast_ptr_to_int' : (('ref',), 'int'),
+ 'cast_int_to_ptr' : (('int',), 'ref'),
+ 'debug_merge_point': (('ref',), None),
+ #'getitem' : (('void', 'ref', 'int'), 'int'),
+ #'setitem' : (('void', 'ref', 'int', 'int'), None),
+ #'newlist' : (('void', 'varargs'), 'ref'),
+ #'append' : (('void', 'ref', 'int'), None),
+ #'insert' : (('void', 'ref', 'int', 'int'), None),
+ #'pop' : (('void', 'ref',), 'int'),
+ #'len' : (('void', 'ref',), 'int'),
+ #'listnonzero' : (('void', 'ref',), 'int'),
}
# ____________________________________________________________
@@ -215,14 +215,14 @@
if tp == "intorptr":
TYPE = lltype.typeOf(x)
if isinstance(TYPE, lltype.Ptr) and TYPE.TO._gckind == 'gc':
- tp = "ptr"
+ tp = "ref"
else:
tp = "int"
if tp == 'int':
return str(x)
elif tp == 'void':
return '---'
- elif tp == 'ptr':
+ elif tp == 'ref':
if not x:
return '(* None)'
if isinstance(x, int):
@@ -624,7 +624,7 @@
# delegating to the builtins do_xxx() (done automatically for simple cases)
def op_getarrayitem_gc(self, arraydescr, array, index):
- if arraydescr.typeinfo == 'p':
+ if arraydescr.typeinfo == REF:
return do_getarrayitem_gc_ptr(array, index)
else:
return do_getarrayitem_gc_int(array, index, self.memocast)
@@ -632,7 +632,7 @@
op_getarrayitem_gc_pure = op_getarrayitem_gc
def op_getfield_gc(self, fielddescr, struct):
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
return do_getfield_gc_ptr(struct, fielddescr.ofs)
else:
return do_getfield_gc_int(struct, fielddescr.ofs, self.memocast)
@@ -640,7 +640,7 @@
op_getfield_gc_pure = op_getfield_gc
def op_getfield_raw(self, fielddescr, struct):
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
return do_getfield_raw_ptr(struct, fielddescr.ofs, self.memocast)
else:
return do_getfield_raw_int(struct, fielddescr.ofs, self.memocast)
@@ -657,20 +657,20 @@
return result
def op_setarrayitem_gc(self, arraydescr, array, index, newvalue):
- if arraydescr.typeinfo == 'p':
+ if arraydescr.typeinfo == REF:
do_setarrayitem_gc_ptr(array, index, newvalue)
else:
do_setarrayitem_gc_int(array, index, newvalue, self.memocast)
def op_setfield_gc(self, fielddescr, struct, newvalue):
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
do_setfield_gc_ptr(struct, fielddescr.ofs, newvalue)
else:
do_setfield_gc_int(struct, fielddescr.ofs, newvalue,
self.memocast)
def op_setfield_raw(self, fielddescr, struct, newvalue):
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
do_setfield_raw_ptr(struct, fielddescr.ofs, newvalue,
self.memocast)
else:
@@ -681,7 +681,7 @@
_call_args[:] = args
if calldescr.typeinfo == 'v':
err_result = None
- elif calldescr.typeinfo == 'p':
+ elif calldescr.typeinfo == REF:
err_result = lltype.nullptr(llmemory.GCREF.TO)
else:
assert calldescr.typeinfo == 'i'
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/runner.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/llgraph/runner.py Thu Aug 27 18:29:54 2009
@@ -8,6 +8,7 @@
from pypy.rpython.ootypesystem import ootype
from pypy.rpython.llinterp import LLInterpreter
from pypy.jit.metainterp import history
+from pypy.jit.metainterp.history import REF
from pypy.jit.metainterp.warmspot import unwrap
from pypy.jit.metainterp.resoperation import ResOperation, rop
from pypy.jit.backend import model
@@ -44,10 +45,10 @@
return self.ofs
def is_pointer_field(self):
- return self.typeinfo == 'p'
+ return self.typeinfo == REF
def is_array_of_pointers(self):
- return self.typeinfo == 'p'
+ return self.typeinfo == REF
def equals(self, other):
if not isinstance(other, Descr):
@@ -301,7 +302,7 @@
assert isinstance(arraydescr, Descr)
array = args[0].getref_base()
index = args[1].getint()
- if arraydescr.typeinfo == 'p':
+ if arraydescr.typeinfo == REF:
return history.BoxPtr(llimpl.do_getarrayitem_gc_ptr(array, index))
else:
return history.BoxInt(llimpl.do_getarrayitem_gc_int(array, index,
@@ -310,7 +311,7 @@
def do_getfield_gc(self, args, fielddescr):
assert isinstance(fielddescr, Descr)
struct = args[0].getref_base()
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
return history.BoxPtr(llimpl.do_getfield_gc_ptr(struct,
fielddescr.ofs))
else:
@@ -320,7 +321,7 @@
def do_getfield_raw(self, args, fielddescr):
assert isinstance(fielddescr, Descr)
struct = self.cast_int_to_adr(args[0].getint())
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
return history.BoxPtr(llimpl.do_getfield_raw_ptr(struct,
fielddescr.ofs,
self.memo_cast))
@@ -351,7 +352,7 @@
assert isinstance(arraydescr, Descr)
array = args[0].getref_base()
index = args[1].getint()
- if arraydescr.typeinfo == 'p':
+ if arraydescr.typeinfo == REF:
newvalue = args[2].getref_base()
llimpl.do_setarrayitem_gc_ptr(array, index, newvalue)
else:
@@ -362,7 +363,7 @@
def do_setfield_gc(self, args, fielddescr):
assert isinstance(fielddescr, Descr)
struct = args[0].getref_base()
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
newvalue = args[1].getref_base()
llimpl.do_setfield_gc_ptr(struct, fielddescr.ofs, newvalue)
else:
@@ -373,7 +374,7 @@
def do_setfield_raw(self, args, fielddescr):
assert isinstance(fielddescr, Descr)
struct = self.cast_int_to_adr(args[0].getint())
- if fielddescr.typeinfo == 'p':
+ if fielddescr.typeinfo == REF:
newvalue = args[1].getref_base()
llimpl.do_setfield_raw_ptr(struct, fielddescr.ofs, newvalue,
self.memo_cast)
@@ -418,7 +419,7 @@
llimpl.do_call_pushptr(arg.getref_base())
else:
llimpl.do_call_pushint(arg.getint())
- if calldescr.typeinfo == 'p':
+ if calldescr.typeinfo == REF:
return history.BoxPtr(llimpl.do_call_ptr(func, self.memo_cast))
elif calldescr.typeinfo == 'i':
return history.BoxInt(llimpl.do_call_int(func, self.memo_cast))
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/runner_test.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/runner_test.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/runner_test.py Thu Aug 27 18:29:54 2009
@@ -36,7 +36,7 @@
self.guard_failed = True
if result_type == 'int':
return BoxInt(self.cpu.get_latest_value_int(0))
- elif result_type == 'ptr':
+ elif result_type == 'ref':
return BoxPtr(self.cpu.get_latest_value_ref(0))
elif result_type == 'void':
return None
@@ -49,7 +49,7 @@
result = None
elif result_type == 'int':
result = BoxInt()
- elif result_type == 'ptr':
+ elif result_type == 'ref':
result = BoxPtr()
else:
raise ValueError(result_type)
@@ -306,7 +306,7 @@
'void', descr=fielddescr2)
assert res is None
res = self.execute_operation(rop.GETFIELD_GC, [t_box],
- 'ptr', descr=fielddescr2)
+ 'ref', descr=fielddescr2)
assert res.value == u_box.value
#
null_const = self.null_instance().constbox()
@@ -314,7 +314,7 @@
'void', descr=fielddescr2)
assert res is None
res = self.execute_operation(rop.GETFIELD_GC, [t_box],
- 'ptr', descr=fielddescr2)
+ 'ref', descr=fielddescr2)
assert res.value == null_const.value
def test_passing_guards(self):
@@ -443,7 +443,7 @@
'void', descr=arraydescr)
assert r is None
r = self.execute_operation(rop.GETARRAYITEM_GC, [b_box, BoxInt(1)],
- 'ptr', descr=arraydescr)
+ 'ref', descr=arraydescr)
assert r.value == a_box.value
#
# Unsigned should work the same as Signed
@@ -529,7 +529,7 @@
r = self.execute_operation(rop.SAME_AS, [ConstInt(5)], 'int')
assert r.value == 5
u_box = self.alloc_unicode(u"hello\u1234")
- r = self.execute_operation(rop.SAME_AS, [u_box.constbox()], 'ptr')
+ r = self.execute_operation(rop.SAME_AS, [u_box.constbox()], 'ref')
assert r.value == u_box.value
@@ -611,12 +611,12 @@
res = self.execute_operation(rop.CAST_PTR_TO_INT,
[BoxPtr(x)], 'int').value
res2 = self.execute_operation(rop.CAST_INT_TO_PTR,
- [BoxInt(res)], 'ptr').value
+ [BoxInt(res)], 'ref').value
x = lltype.cast_opaque_ptr(llmemory.GCREF, x)
res = self.execute_operation(rop.CAST_PTR_TO_INT,
[ConstPtr(x)], 'int').value
res2 = self.execute_operation(rop.CAST_INT_TO_PTR,
- [ConstInt(res)], 'ptr').value
+ [ConstInt(res)], 'ref').value
assert res2 == x
def test_ooops_non_gc(self):
@@ -636,8 +636,8 @@
cpu = self.cpu
S = lltype.GcStruct('S', ('x', lltype.Char), ('y', lltype.Char))
sizedescr = cpu.sizeof(S)
- r1 = self.execute_operation(rop.NEW, [], 'ptr', descr=sizedescr)
- r2 = self.execute_operation(rop.NEW, [], 'ptr', descr=sizedescr)
+ r1 = self.execute_operation(rop.NEW, [], 'ref', descr=sizedescr)
+ r2 = self.execute_operation(rop.NEW, [], 'ref', descr=sizedescr)
assert r1.value != r2.value
xdescr = cpu.fielddescrof(S, 'x')
ydescr = cpu.fielddescrof(S, 'y')
@@ -653,8 +653,8 @@
cpu = self.cpu
t_box, T_box = self.alloc_instance(self.T)
cpu.set_class_sizes({T_box.value: cpu.sizeof(self.T)})
- r1 = self.execute_operation(rop.NEW_WITH_VTABLE, [T_box], 'ptr')
- r2 = self.execute_operation(rop.NEW_WITH_VTABLE, [T_box], 'ptr')
+ r1 = self.execute_operation(rop.NEW_WITH_VTABLE, [T_box], 'ref')
+ r2 = self.execute_operation(rop.NEW_WITH_VTABLE, [T_box], 'ref')
assert r1.value != r2.value
descr1 = cpu.fielddescrof(self.S, 'chr1')
descr2 = cpu.fielddescrof(self.S, 'chr2')
@@ -681,24 +681,24 @@
A = lltype.GcArray(lltype.Signed)
arraydescr = self.cpu.arraydescrof(A)
r1 = self.execute_operation(rop.NEW_ARRAY, [BoxInt(342)],
- 'ptr', descr=arraydescr)
+ 'ref', descr=arraydescr)
r2 = self.execute_operation(rop.NEW_ARRAY, [BoxInt(342)],
- 'ptr', descr=arraydescr)
+ 'ref', descr=arraydescr)
assert r1.value != r2.value
a = lltype.cast_opaque_ptr(lltype.Ptr(A), r1.value)
assert a[0] == 0
assert len(a) == 342
def test_new_string(self):
- r1 = self.execute_operation(rop.NEWSTR, [BoxInt(342)], 'ptr')
- r2 = self.execute_operation(rop.NEWSTR, [BoxInt(342)], 'ptr')
+ r1 = self.execute_operation(rop.NEWSTR, [BoxInt(342)], 'ref')
+ r2 = self.execute_operation(rop.NEWSTR, [BoxInt(342)], 'ref')
assert r1.value != r2.value
a = lltype.cast_opaque_ptr(lltype.Ptr(rstr.STR), r1.value)
assert len(a.chars) == 342
def test_new_unicode(self):
- r1 = self.execute_operation(rop.NEWUNICODE, [BoxInt(342)], 'ptr')
- r2 = self.execute_operation(rop.NEWUNICODE, [BoxInt(342)], 'ptr')
+ r1 = self.execute_operation(rop.NEWUNICODE, [BoxInt(342)], 'ref')
+ r2 = self.execute_operation(rop.NEWUNICODE, [BoxInt(342)], 'ref')
assert r1.value != r2.value
a = lltype.cast_opaque_ptr(lltype.Ptr(rstr.UNICODE), r1.value)
assert len(a.chars) == 342
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/test_ll_random.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/test_ll_random.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/test/test_ll_random.py Thu Aug 27 18:29:54 2009
@@ -426,7 +426,7 @@
""" % funcargs).compile()
vtableptr = v._hints['vtable']._as_ptr()
d = {
- 'ptr': S.value,
+ 'ref': S.value,
'vtable' : vtableptr,
'LLException' : LLException,
}
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/x86/test/test_runner.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/x86/test/test_runner.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/backend/x86/test/test_runner.py Thu Aug 27 18:29:54 2009
@@ -143,14 +143,14 @@
self.cpu.assembler.malloc_func_addr = addr
ofs = symbolic.get_field_token(rstr.STR, 'chars', False)[0]
- res = self.execute_operation(rop.NEWSTR, [ConstInt(7)], 'ptr')
+ res = self.execute_operation(rop.NEWSTR, [ConstInt(7)], 'ref')
assert allocs[0] == 7 + ofs + WORD
resbuf = self._resbuf(res)
assert resbuf[ofs/WORD] == 7
# ------------------------------------------------------------
- res = self.execute_operation(rop.NEWSTR, [BoxInt(7)], 'ptr')
+ res = self.execute_operation(rop.NEWSTR, [BoxInt(7)], 'ref')
assert allocs[0] == 7 + ofs + WORD
resbuf = self._resbuf(res)
assert resbuf[ofs/WORD] == 7
@@ -162,7 +162,7 @@
descr = self.cpu.arraydescrof(TP)
res = self.execute_operation(rop.NEW_ARRAY, [ConstInt(10)],
- 'ptr', descr)
+ 'ref', descr)
assert allocs[0] == 10*WORD + ofs + WORD
resbuf = self._resbuf(res)
assert resbuf[ofs/WORD] == 10
@@ -170,7 +170,7 @@
# ------------------------------------------------------------
res = self.execute_operation(rop.NEW_ARRAY, [BoxInt(10)],
- 'ptr', descr)
+ 'ref', descr)
assert allocs[0] == 10*WORD + ofs + WORD
resbuf = self._resbuf(res)
assert resbuf[ofs/WORD] == 10
@@ -183,7 +183,7 @@
ofs = symbolic.get_field_token(STR, 'chars', False)[0]
ofs_items = symbolic.get_field_token(STR.chars, 'items', False)[0]
- res = self.execute_operation(rop.NEWSTR, [ConstInt(10)], 'ptr')
+ res = self.execute_operation(rop.NEWSTR, [ConstInt(10)], 'ref')
self.execute_operation(rop.STRSETITEM, [res, ConstInt(2), ConstInt(ord('d'))], 'void')
resbuf = self._resbuf(res, ctypes.c_char)
assert resbuf[ofs + ofs_items + 2] == 'd'
@@ -198,7 +198,7 @@
itemsofs = symbolic.get_field_token(TP, 'items', False)[0]
descr = self.cpu.arraydescrof(TP)
res = self.execute_operation(rop.NEW_ARRAY, [ConstInt(10)],
- 'ptr', descr)
+ 'ref', descr)
resbuf = self._resbuf(res)
assert resbuf[ofs/WORD] == 10
self.execute_operation(rop.SETARRAYITEM_GC, [res,
@@ -237,7 +237,7 @@
itemsofs = symbolic.get_field_token(TP, 'items', False)[0]
descr = self.cpu.arraydescrof(TP)
res = self.execute_operation(rop.NEW_ARRAY, [ConstInt(10)],
- 'ptr', descr)
+ 'ref', descr)
resbuf = self._resbuf(res, ctypes.c_char)
assert resbuf[ofs] == chr(10)
for i in range(10):
@@ -260,7 +260,7 @@
('c2', lltype.Char),
('c3', lltype.Char))
res = self.execute_operation(rop.NEW, [],
- 'ptr', self.cpu.sizeof(TP))
+ 'ref', self.cpu.sizeof(TP))
ofs_s = self.cpu.fielddescrof(TP, 's')
#ofs_f = self.cpu.fielddescrof(TP, 'f')
ofs_u = self.cpu.fielddescrof(TP, 'u')
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/compile.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/compile.py Thu Aug 27 18:29:54 2009
@@ -152,7 +152,7 @@
class DoneWithThisFrameDescrPtr(AbstractDescr):
def handle_fail_op(self, metainterp_sd, fail_op):
- assert metainterp_sd.result_type == 'ptr'
+ assert metainterp_sd.result_type == 'ref'
resultbox = fail_op.args[0]
if isinstance(resultbox, BoxPtr):
result = metainterp_sd.cpu.get_latest_value_ref(0)
@@ -163,7 +163,7 @@
class DoneWithThisFrameDescrObj(AbstractDescr):
def handle_fail_op(self, metainterp_sd, fail_op):
- assert metainterp_sd.result_type == 'obj'
+ assert metainterp_sd.result_type == 'ref'
resultbox = fail_op.args[0]
if isinstance(resultbox, BoxObj):
result = metainterp_sd.cpu.get_latest_value_ref(0)
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/history.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/history.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/history.py Thu Aug 27 18:29:54 2009
@@ -33,9 +33,9 @@
if TYPE.TO._gckind == 'raw':
return "int"
else:
- return "ptr"
+ return "ref"
elif isinstance(TYPE, ootype.OOType):
- return "obj"
+ return "ref"
else:
raise NotImplementedError("type %s not supported" % TYPE)
@@ -153,12 +153,8 @@
else:
intval = lltype.cast_primitive(lltype.Signed, x)
return ConstInt(intval)
- elif kind == "ptr":
- ptrval = lltype.cast_opaque_ptr(llmemory.GCREF, x)
- return ConstPtr(ptrval)
- elif kind == "obj":
- obj = ootype.cast_to_object(x)
- return ConstObj(obj)
+ elif kind == "ref":
+ return cpu.ts.new_ConstRef(x)
else:
raise NotImplementedError(kind)
@@ -388,7 +384,8 @@
if kind == "int":
intval = lltype.cast_primitive(lltype.Signed, x)
return BoxInt(intval)
- elif kind == "ptr":
+ elif kind == "ref":
+ # XXX add ootype support?
ptrval = lltype.cast_opaque_ptr(llmemory.GCREF, x)
return BoxPtr(ptrval)
else:
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/pyjitpl.py Thu Aug 27 18:29:54 2009
@@ -1135,9 +1135,9 @@
raise sd.DoneWithThisFrameVoid()
elif sd.result_type == 'int':
raise sd.DoneWithThisFrameInt(resultbox.getint())
- elif sd.result_type == 'ptr':
+ elif sd.result_type == 'ref':
raise sd.DoneWithThisFramePtr(resultbox.getref_base())
- elif self.cpu.is_oo and sd.result_type == 'obj':
+ elif self.cpu.is_oo and sd.result_type == 'obj': # XXX
raise sd.DoneWithThisFrameObj(resultbox.getref_base())
else:
assert False
@@ -1445,10 +1445,10 @@
elif sd.result_type == 'int':
exits = [exitbox]
loops = compile.loops_done_with_this_frame_int
- elif sd.result_type == 'ptr':
+ elif not sd.cpu.is_oo and sd.result_type == 'ref':
exits = [exitbox]
loops = compile.loops_done_with_this_frame_ptr
- elif sd.cpu.is_oo and sd.result_type == 'obj':
+ elif sd.cpu.is_oo and sd.result_type == 'ref':
exits = [exitbox]
loops = compile.loops_done_with_this_frame_obj
else:
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/typesystem.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/typesystem.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/typesystem.py Thu Aug 27 18:29:54 2009
@@ -41,6 +41,10 @@
BoxRef = history.BoxPtr
ConstRef = history.ConstPtr
+ def new_ConstRef(self, x):
+ ptrval = lltype.cast_opaque_ptr(llmemory.GCREF, x)
+ return history.ConstPtr(ptrval)
+
def get_typeptr(self, obj):
return obj.typeptr
@@ -112,6 +116,10 @@
BoxRef = history.BoxObj
ConstRef = history.ConstObj
+ def new_ConstRef(self, x):
+ obj = ootype.cast_to_object(x)
+ return history.ConstObj(obj)
+
def get_typeptr(self, obj):
return ootype.classof(obj)
Modified: pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/warmspot.py (original)
+++ pypy/branch/pyjitpl5-less-is_oo/pypy/jit/metainterp/warmspot.py Thu Aug 27 18:29:54 2009
@@ -454,10 +454,10 @@
assert result_kind == 'int'
return lltype.cast_primitive(RESULT, e.result)
except DoneWithThisFramePtr, e:
- assert result_kind == 'ptr'
+ assert result_kind == 'ref'
return lltype.cast_opaque_ptr(RESULT, e.result)
except DoneWithThisFrameObj, e:
- assert result_kind == 'obj'
+ assert result_kind == 'ref'
return ootype.cast_from_object(RESULT, e.result)
except ExitFrameWithExceptionRef, e:
value = ts.cast_to_baseclass(e.value)
@@ -689,10 +689,10 @@
def set_future_value(j, value, typecode):
cpu = metainterp_sd.cpu
- if typecode == 'ptr':
+ if not cpu.is_oo and typecode == 'ref':
ptrvalue = lltype.cast_opaque_ptr(llmemory.GCREF, value)
cpu.set_future_value_ref(j, ptrvalue)
- elif typecode == 'obj':
+ elif cpu.is_oo and typecode == 'ref':
objvalue = ootype.cast_to_object(value)
cpu.set_future_value_ref(j, objvalue)
elif typecode == 'int':
More information about the Pypy-commit
mailing list