[pypy-svn] r74162 - pypy/branch/blackhole-improvement/pypy/jit/metainterp

arigo at codespeak.net arigo at codespeak.net
Wed Apr 28 13:58:48 CEST 2010


Author: arigo
Date: Wed Apr 28 13:58:46 2010
New Revision: 74162

Modified:
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
Log:
Fixes.


Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py	Wed Apr 28 13:58:46 2010
@@ -86,12 +86,16 @@
                     argcode = argcodes[next_argcode]
                     next_argcode = next_argcode + 1
                     if argcode == 'i':
+                        assert argtype == 'i'
                         value = self.registers_i[ord(code[position])]
                     elif argcode == 'c':
+                        assert argtype == 'i'
                         value = signedord(code[position])
                     elif argcode == 'r':
+                        assert argtype == 'r'
                         value = self.registers_r[ord(code[position])]
                     elif argcode == 'f':
+                        assert argtype == 'f'
                         value = self.registers_f[ord(code[position])]
                     else:
                         raise AssertionError("bad argcode")
@@ -320,6 +324,19 @@
     def opimpl_int_ge(self, a, b):
         return int(a >= b)
 
+    @arguments("r", "r", returns="i")
+    def opimpl_ptr_eq(self, a, b):
+        return int(a == b)
+    @arguments("r", "r", returns="i")
+    def opimpl_ptr_ne(self, a, b):
+        return int(a != b)
+    @arguments("r", returns="i")
+    def opimpl_ptr_iszero(self, a):
+        return int(not a)
+    @arguments("r", returns="i")
+    def opimpl_ptr_nonzero(self, a):
+        return int(bool(a))
+
     @arguments("i")
     def opimpl_int_return(self, a):
         self.result_i = a
@@ -390,6 +407,34 @@
         else:
             return target
 
+    @arguments("L", "r", "r", "pc", returns="L")
+    def opimpl_goto_if_not_ptr_eq(self, target, a, b, pc):
+        if a == b:
+            return pc
+        else:
+            return target
+
+    @arguments("L", "r", "r", "pc", returns="L")
+    def opimpl_goto_if_not_ptr_ne(self, target, a, b, pc):
+        if a != b:
+            return pc
+        else:
+            return target
+
+    @arguments("L", "r", "pc", returns="L")
+    def opimpl_goto_if_not_ptr_iszero(self, target, a, pc):
+        if not a:
+            return pc
+        else:
+            return target
+
+    @arguments("L", "r", "pc", returns="L")
+    def opimpl_goto_if_not_ptr_nonzero(self, target, a, pc):
+        if a:
+            return pc
+        else:
+            return target
+
     @arguments("L", returns="L")
     def opimpl_goto(self, target):
         return target
@@ -510,19 +555,19 @@
     opimpl_getfield_gc_r_pure = opimpl_getfield_gc_r
     opimpl_getfield_gc_f_pure = opimpl_getfield_gc_f
 
-    @arguments("r", "d", returns="i")
+    @arguments("i", "d", returns="i")
     def opimpl_getfield_raw_i(self, struct, fielddescr):
         return self.cpu.bh_getfield_raw_i(struct, fielddescr)
-    @arguments("r", "d", returns="i")
+    @arguments("i", "d", returns="i")
     def opimpl_getfield_raw_c(self, struct, fielddescr):
         return self.cpu.bh_getfield_raw_c(struct, fielddescr)
-    @arguments("r", "d", returns="i")
+    @arguments("i", "d", returns="i")
     def opimpl_getfield_raw_u(self, struct, fielddescr):
         return self.cpu.bh_getfield_raw_u(struct, fielddescr)
-    @arguments("r", "d", returns="r")
+    @arguments("i", "d", returns="r")
     def opimpl_getfield_raw_r(self, struct, fielddescr):
         return self.cpu.bh_getfield_raw_r(struct, fielddescr)
-    @arguments("r", "d", returns="f")
+    @arguments("i", "d", returns="f")
     def opimpl_getfield_raw_f(self, struct, fielddescr):
         return self.cpu.bh_getfield_raw_f(struct, fielddescr)
 
@@ -548,19 +593,19 @@
     def opimpl_setfield_gc_f(self, struct, fielddescr, newvalue):
         self.cpu.bh_setfield_gc_f(struct, fielddescr, newvalue)
 
-    @arguments("r", "d", "i")
+    @arguments("i", "d", "i")
     def opimpl_setfield_raw_i(self, struct, fielddescr, newvalue):
         self.cpu.bh_setfield_raw_i(struct, fielddescr, newvalue)
-    @arguments("r", "d", "i")
+    @arguments("i", "d", "i")
     def opimpl_setfield_raw_c(self, struct, fielddescr, newvalue):
         self.cpu.bh_setfield_raw_c(struct, fielddescr, newvalue)
-    @arguments("r", "d", "i")
+    @arguments("i", "d", "i")
     def opimpl_setfield_raw_u(self, struct, fielddescr, newvalue):
         self.cpu.bh_setfield_raw_u(struct, fielddescr, newvalue)
-    @arguments("r", "d", "r")
+    @arguments("i", "d", "r")
     def opimpl_setfield_raw_r(self, struct, fielddescr, newvalue):
         self.cpu.bh_setfield_raw_r(struct, fielddescr, newvalue)
-    @arguments("r", "d", "f")
+    @arguments("i", "d", "f")
     def opimpl_setfield_raw_f(self, struct, fielddescr, newvalue):
         self.cpu.bh_setfield_raw_f(struct, fielddescr, newvalue)
 



More information about the Pypy-commit mailing list