[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