[pypy-svn] r40793 - pypy/dist/pypy/jit/codegen/ppc
mwh at codespeak.net
mwh at codespeak.net
Mon Mar 19 21:41:18 CET 2007
Author: mwh
Date: Mon Mar 19 21:41:17 2007
New Revision: 40793
Modified:
pypy/dist/pypy/jit/codegen/ppc/rgenop.py
Log:
allow address cases in flexswitches
Modified: pypy/dist/pypy/jit/codegen/ppc/rgenop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/ppc/rgenop.py (original)
+++ pypy/dist/pypy/jit/codegen/ppc/rgenop.py Mon Mar 19 21:41:17 2007
@@ -1142,10 +1142,10 @@
@specialize.genconst(1)
def genconst(self, llvalue):
T = lltype.typeOf(llvalue)
- if isinstance(T, lltype.Primitive):
- return IntConst(lltype.cast_primitive(lltype.Signed, llvalue))
- elif T is llmemory.Address:
+ if T is llmemory.Address:
return AddrConst(llvalue)
+ elif isinstance(T, lltype.Primitive):
+ return IntConst(lltype.cast_primitive(lltype.Signed, llvalue))
elif isinstance(T, lltype.Ptr):
lladdr = llmemory.cast_ptr_to_adr(llvalue)
if T.TO._gckind == 'gc':
@@ -1339,8 +1339,8 @@
def _add_case(self, gv_case, target_addr):
asm = self.asm
- assert isinstance(gv_case, IntConst)
- asm.load_word(rSCRATCH, gv_case.value)
+ assert isinstance(gv_case, GenConst)
+ gv_case.load_now(asm, insn.gprs[0])
asm.cmpw(self.crf.number, rSCRATCH, self.switch_reg.number)
asm.load_word(rSCRATCH, target_addr)
asm.mtctr(rSCRATCH)
More information about the Pypy-commit
mailing list