[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