[pypy-svn] r25789 - in pypy/dist/pypy/rpython: . lltypesystem ootypesystem test

antocuni at codespeak.net antocuni at codespeak.net
Thu Apr 13 14:59:21 CEST 2006


Author: antocuni
Date: Thu Apr 13 14:59:07 2006
New Revision: 25789

Added:
   pypy/dist/pypy/rpython/lltypesystem/rslice.py
      - copied, changed from r25772, pypy/dist/pypy/rpython/rslice.py
   pypy/dist/pypy/rpython/ootypesystem/rslice.py   (contents, props changed)
Removed:
   pypy/dist/pypy/rpython/rslice.py
Modified:
   pypy/dist/pypy/rpython/lltypesystem/rlist.py
   pypy/dist/pypy/rpython/ootypesystem/rlist.py
   pypy/dist/pypy/rpython/rstr.py
   pypy/dist/pypy/rpython/test/test_rlist.py
   pypy/dist/pypy/rpython/typesystem.py
Log:
rpython.rslice has been made typesystem-specific; the old rslice
implementation has been moved to lltypesystem, and a new one (based on
classes) has been placed in ootypesystem.



Modified: pypy/dist/pypy/rpython/lltypesystem/rlist.py
==============================================================================
--- pypy/dist/pypy/rpython/lltypesystem/rlist.py	(original)
+++ pypy/dist/pypy/rpython/lltypesystem/rlist.py	Thu Apr 13 14:59:07 2006
@@ -7,9 +7,9 @@
 from pypy.rpython.rlist import AbstractBaseListRepr, AbstractListRepr, \
         AbstractListIteratorRepr, rtype_newlist
 from pypy.rpython.rlist import dum_nocheck, dum_checkidx
-from pypy.rpython.rslice import SliceRepr
-from pypy.rpython.rslice import startstop_slice_repr, startonly_slice_repr
-from pypy.rpython.rslice import minusone_slice_repr
+from pypy.rpython.lltypesystem.rslice import SliceRepr
+from pypy.rpython.lltypesystem.rslice import startstop_slice_repr, startonly_slice_repr
+from pypy.rpython.lltypesystem.rslice import minusone_slice_repr
 from pypy.rpython.lltypesystem. lltype import \
      GcForwardReference, Ptr, GcArray, GcStruct, \
      Void, Signed, malloc, typeOf, Primitive, \

Modified: pypy/dist/pypy/rpython/ootypesystem/rlist.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/rlist.py	(original)
+++ pypy/dist/pypy/rpython/ootypesystem/rlist.py	Thu Apr 13 14:59:07 2006
@@ -3,9 +3,12 @@
         AbstractListIteratorRepr, rtype_newlist
 from pypy.rpython.rmodel import Repr, IntegerRepr
 from pypy.rpython.rmodel import inputconst, externalvsinternal
+from pypy.rpython.lltypesystem.lltype import Signed
 from pypy.rpython.ootypesystem import ootype
 from pypy.rpython.ootypesystem.riterable import iterator_type
-from pypy.rpython.lltypesystem.lltype import Signed
+from pypy.rpython.ootypesystem.rslice import SliceRepr, \
+     startstop_slice_repr, startonly_slice_repr, minusone_slice_repr
+
 
 class BaseListRepr(AbstractBaseListRepr):
 
@@ -78,6 +81,22 @@
             hop.exception_is_here()
             return hop.gendirectcall(ll_setitem, v_list, v_index, v_item)
             
+
+class __extend__(pairtype(BaseListRepr, SliceRepr)):
+
+    def rtype_getitem((r_list, r_slic), hop):
+        raise NotImplementedError # TODO
+##        cRESLIST = hop.inputconst(Void, hop.r_result.LIST)
+##        if r_slic == startonly_slice_repr:
+##            v_lst, v_start = hop.inputargs(r_lst, startonly_slice_repr)
+##            return hop.gendirectcall(ll_listslice_startonly, cRESLIST, v_lst, v_start)
+##        if r_slic == startstop_slice_repr:
+##            v_lst, v_slice = hop.inputargs(r_lst, startstop_slice_repr)
+##            return hop.gendirectcall(ll_listslice, cRESLIST, v_lst, v_slice)
+##        if r_slic == minusone_slice_repr:
+##            v_lst, v_ignored = hop.inputargs(r_lst, minusone_slice_repr)
+##            return hop.gendirectcall(ll_listslice_minusone, cRESLIST, v_lst)
+##        raise TyperError('getitem does not support slices with %r' % (r_slic,))
             
 
 def ll_getitem(lst, index):

Added: pypy/dist/pypy/rpython/ootypesystem/rslice.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/rpython/ootypesystem/rslice.py	Thu Apr 13 14:59:07 2006
@@ -0,0 +1,24 @@
+from pypy.rpython.rmodel import Repr
+from pypy.rpython.lltypesystem.lltype import Void, Signed
+from pypy.rpython.ootypesystem import ootype
+
+SLICE = ootype.Instance('Slice', ootype.ROOT, {'start': Signed, 'stop': Signed})
+
+class SliceRepr(Repr):
+    pass
+
+startstop_slice_repr = SliceRepr()
+startstop_slice_repr.lowleveltype = SLICE
+startonly_slice_repr = SliceRepr()
+startonly_slice_repr.lowleveltype = Signed
+minusone_slice_repr = SliceRepr()
+minusone_slice_repr.lowleveltype = Void    # only for [:-1]
+
+# ____________________________________________________________
+
+def ll_newslice(start, stop):
+    s = ootype.new(SLICE)
+    s.start = start
+    s.stop = stop
+    return s
+

Modified: pypy/dist/pypy/rpython/rstr.py
==============================================================================
--- pypy/dist/pypy/rpython/rstr.py	(original)
+++ pypy/dist/pypy/rpython/rstr.py	Thu Apr 13 14:59:07 2006
@@ -8,9 +8,9 @@
 from pypy.rpython.robject import PyObjRepr, pyobj_repr
 from pypy.rpython.lltypesystem.rtuple import TupleRepr # XXX type system!
 from pypy.rpython import rint
-from pypy.rpython.rslice import SliceRepr
-from pypy.rpython.rslice import startstop_slice_repr, startonly_slice_repr
-from pypy.rpython.rslice import minusone_slice_repr
+from pypy.rpython.lltypesystem.rslice import SliceRepr # XXX type system!
+from pypy.rpython.lltypesystem.rslice import startstop_slice_repr, startonly_slice_repr
+from pypy.rpython.lltypesystem.rslice import minusone_slice_repr
 from pypy.rpython.lltypesystem.lltype import \
      GcStruct, Signed, Array, Char, Ptr, malloc, \
      Bool, Void, GcArray, nullptr, pyobjectptr

Modified: pypy/dist/pypy/rpython/test/test_rlist.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rlist.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rlist.py	Thu Apr 13 14:59:07 2006
@@ -2,7 +2,7 @@
 from pypy.translator.translator import TranslationContext
 from pypy.rpython.lltypesystem.lltype import *
 from pypy.rpython.lltypesystem.rlist import *
-from pypy.rpython.rslice import ll_newslice
+from pypy.rpython.lltypesystem.rslice import ll_newslice
 from pypy.rpython.rint import signed_repr
 from pypy.rpython.test.test_llinterp import interpret, interpret_raises
 from pypy.translator.translator import TranslationContext

Modified: pypy/dist/pypy/rpython/typesystem.py
==============================================================================
--- pypy/dist/pypy/rpython/typesystem.py	(original)
+++ pypy/dist/pypy/rpython/typesystem.py	Thu Apr 13 14:59:07 2006
@@ -20,7 +20,7 @@
                                   None, None, ['__doc__'])
             except ImportError:
                 return None
-        if name in ('rclass', 'rpbc', 'rbuiltin', 'rtuple', 'rlist',
+        if name in ('rclass', 'rpbc', 'rbuiltin', 'rtuple', 'rlist', 'rslice',
                 'exceptiondata'):
             mod = load(name)
             if mod is not None:



More information about the Pypy-commit mailing list