[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