[pypy-svn] r16061 - pypy/dist/pypy/translator/llvm2
rxe at codespeak.net
rxe at codespeak.net
Sun Aug 14 16:19:53 CEST 2005
Author: rxe
Date: Sun Aug 14 16:19:51 2005
New Revision: 16061
Modified:
pypy/dist/pypy/translator/llvm2/opwriter.py
Log:
Check this in for now.
Modified: pypy/dist/pypy/translator/llvm2/opwriter.py
==============================================================================
--- pypy/dist/pypy/translator/llvm2/opwriter.py (original)
+++ pypy/dist/pypy/translator/llvm2/opwriter.py Sun Aug 14 16:19:51 2005
@@ -90,7 +90,10 @@
elif op.opname in self.shift_operations:
self.shiftop(op)
elif op.opname.startswith('cast_'):
- self.cast_primitive(op)
+ if op.opname == 'cast_char_to_int':
+ self.cast_char_to_int(op)
+ else:
+ self.cast_primitive(op)
else:
meth = getattr(self, op.opname, None)
if not meth:
@@ -207,6 +210,17 @@
self.db.repr_arg(op.args[0]),
tmpvar)
+ def cast_char_to_int(self, op):
+ " works for all casts "
+ assert len(op.args) == 1
+ targetvar = self.db.repr_arg(op.result)
+ targettype = self.db.repr_arg_type(op.result)
+ fromvar = self.db.repr_arg(op.args[0])
+ fromtype = self.db.repr_arg_type(op.args[0])
+ intermediate = self.db.repr_tmpvar()
+ self.codewriter.cast(intermediate, fromtype, fromvar, "ubyte")
+ self.codewriter.cast(targetvar, "ubyte", intermediate, targettype)
+
def cast_primitive(self, op):
" works for all casts "
assert len(op.args) == 1
More information about the Pypy-commit
mailing list