[pypy-svn] r39772 - pypy/dist/pypy/translator/llvm
rxe at codespeak.net
rxe at codespeak.net
Sat Mar 3 12:11:17 CET 2007
Author: rxe
Date: Sat Mar 3 12:11:12 2007
New Revision: 39772
Modified:
pypy/dist/pypy/translator/llvm/database.py
pypy/dist/pypy/translator/llvm/opwriter.py
Log:
(mwh, rxe) tentatively remove some hacks
Modified: pypy/dist/pypy/translator/llvm/database.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/database.py (original)
+++ pypy/dist/pypy/translator/llvm/database.py Sat Mar 3 12:11:12 2007
@@ -269,11 +269,7 @@
if isinstance(type_, lltype.Primitive):
return self.primitives[type_]
elif isinstance(type_, lltype.Ptr):
- if isinstance(type_.TO, lltype.FixedSizeArray):
- # hack copied from genc
- return self.repr_type(type_.TO.OF) + '*'
- else:
- return self.repr_type(type_.TO) + '*'
+ return self.repr_type(type_.TO) + '*'
else:
raise TypeError("cannot represent %r" %(type_,))
Modified: pypy/dist/pypy/translator/llvm/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/opwriter.py (original)
+++ pypy/dist/pypy/translator/llvm/opwriter.py Sat Mar 3 12:11:12 2007
@@ -333,41 +333,33 @@
op.args[0].concretetype.TO)
assert index != -1
tmpvar = self._tmp()
- STRUCTTYPE = op.args[0].concretetype.TO
- getptr = not isinstance(STRUCTTYPE, lltype.FixedSizeArray)
- if not getptr:
- self.codewriter.comment("HERE HERE")
self.codewriter.getelementptr(tmpvar, opr.argtypes[0],
- opr.argrefs[0], [("uint", index)], getptr=getptr)
+ opr.argrefs[0], [("uint", index)])
self.codewriter.load(opr.retref, opr.rettype, tmpvar)
else:
self._skipped(opr)
def direct_fieldptr(self, opr):
- self.codewriter.comment("begin argh")
op = opr.op
assert opr.rettype != "void"
index = getindexhelper(op.args[1].value,
op.args[0].concretetype.TO)
assert index != -1
- #import pdb; pdb.set_trace()
- self.codewriter.getelementptr(opr.retref, opr.argtypes[0],
- opr.argrefs[0], [("uint", index), ("int", 0)], getptr=False)
- self.codewriter.comment("end argh")
+ tmpvar = self._tmp()
+ self.codewriter.getelementptr(tmpvar, opr.argtypes[0],
+ opr.argrefs[0], [("uint", index)])
+ # get element ptr gets a pointer to the right type, except the generated code really expected
+ # an array of size 1... so we just cast it
+ element_type = self.db.repr_type(op.result.concretetype.TO.OF)+'*'
+ self.codewriter.cast(opr.retref, element_type, tmpvar, opr.rettype)
def getsubstruct(self, opr):
index = getindexhelper(opr.op.args[1].value,
opr.op.args[0].concretetype.TO)
assert opr.rettype != "void"
- STRUCTTYPE = opr.op.args[0].concretetype.TO
- getptr = not isinstance(STRUCTTYPE, lltype.FixedSizeArray)
indices = [("uint", index)]
- RETTYPE = opr.op.result.concretetype.TO
- if isinstance(RETTYPE, lltype.FixedSizeArray):
- indices.append(("int", 0))
- #import pdb; pdb.set_trace()
self.codewriter.getelementptr(opr.retref, opr.argtypes[0],
- opr.argrefs[0], indices, getptr=getptr)
+ opr.argrefs[0], indices)
def setfield(self, opr):
op = opr.op
@@ -375,12 +367,8 @@
tmpvar = self._tmp()
index = getindexhelper(op.args[1].value,
op.args[0].concretetype.TO)
- STRUCTTYPE = op.args[0].concretetype.TO
- getptr = not isinstance(STRUCTTYPE, lltype.FixedSizeArray)
- if not getptr:
- self.codewriter.comment("HERE HERE")
self.codewriter.getelementptr(tmpvar, opr.argtypes[0],
- opr.argrefs[0], [("uint", index)], getptr=getptr)
+ opr.argrefs[0], [("uint", index)])
self.codewriter.store(opr.argtypes[2], opr.argrefs[2], tmpvar)
else:
self._skipped(opr)
@@ -397,28 +385,21 @@
tmpvar = self._tmp()
indices = arrayindices(opr.op.args[0]) + [(indextype, index)]
- ARRAYTYPE = opr.op.args[0].concretetype.TO
- getptr = not isinstance(ARRAYTYPE, lltype.FixedSizeArray)
- self.codewriter.getelementptr(tmpvar, arraytype, array, indices, getptr=getptr)
+ self.codewriter.getelementptr(tmpvar, arraytype, array, indices)
self.codewriter.load(opr.retref, opr.rettype, tmpvar)
def direct_arrayitems(self, opr):
array, index = opr.argrefs
arraytype, indextype = opr.argtypes
indices = arrayindices(opr.op.args[0]) + [(indextype, index)]
- self.codewriter.getelementptr(opr.retref, arraytype, array, inices)
+ self.codewriter.getelementptr(opr.retref, arraytype, array, indices)
def getarraysubstruct(self, opr):
array, index = opr.argrefs
arraytype, indextype = opr.argtypes
indices = arrayindices(opr.op.args[0]) + [(indextype, index)]
- ARRAYTYPE = opr.op.args[0].concretetype.TO
- getptr = not isinstance(ARRAYTYPE, lltype.FixedSizeArray)
- RETTYPE = opr.op.result.concretetype.TO
- if isinstance(RETTYPE, lltype.FixedSizeArray):
- indices.append(("int", 0))
- self.codewriter.getelementptr(opr.retref, arraytype, array, indices, getptr=getptr)
+ self.codewriter.getelementptr(opr.retref, arraytype, array, indices)
def setarrayitem(self, opr):
array, index, valuevar = opr.argrefs
@@ -430,9 +411,7 @@
return
indices = arrayindices(opr.op.args[0]) + [(indextype, index)]
- ARRAYTYPE = opr.op.args[0].concretetype.TO
- getptr = not isinstance(ARRAYTYPE, lltype.FixedSizeArray)
- self.codewriter.getelementptr(tmpvar, arraytype, array, indices, getptr=getptr)
+ self.codewriter.getelementptr(tmpvar, arraytype, array, indices)
self.codewriter.store(valuetype, valuevar, tmpvar)
bare_setarrayitem = setarrayitem
More information about the Pypy-commit
mailing list