[pypy-svn] r74085 - in pypy/branch/blackhole-improvement/pypy/jit: backend backend/llgraph metainterp

arigo at codespeak.net arigo at codespeak.net
Mon Apr 26 18:44:23 CEST 2010


Author: arigo
Date: Mon Apr 26 18:44:22 2010
New Revision: 74085

Modified:
   pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py
   pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py
   pypy/branch/blackhole-improvement/pypy/jit/backend/model.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py
Log:
More getfield.


Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py	Mon Apr 26 18:44:22 2010
@@ -1229,8 +1229,8 @@
     ptr = lltype.cast_opaque_ptr(lltype.Ptr(STRUCT), struct)
     return getattr(ptr, fieldname)
 
-def do_getfield_gc_int(struct, fieldnum, memocast):
-    return cast_to_int(_getfield_gc(struct, fieldnum), memocast)
+def do_getfield_gc_int(struct, fieldnum):
+    return cast_to_int(_getfield_gc(struct, fieldnum))
 
 def do_getfield_gc_float(struct, fieldnum):
     return cast_to_float(_getfield_gc(struct, fieldnum))
@@ -1238,19 +1238,19 @@
 def do_getfield_gc_ptr(struct, fieldnum):
     return cast_to_ptr(_getfield_gc(struct, fieldnum))
 
-def _getfield_raw(struct, fieldnum, memocast):
+def _getfield_raw(struct, fieldnum):
     STRUCT, fieldname = symbolic.TokenToField[fieldnum]
-    ptr = cast_from_int(lltype.Ptr(STRUCT), struct, memocast)
+    ptr = cast_from_int(lltype.Ptr(STRUCT), struct)
     return getattr(ptr, fieldname)
 
-def do_getfield_raw_int(struct, fieldnum, memocast):
-    return cast_to_int(_getfield_raw(struct, fieldnum, memocast), memocast)
+def do_getfield_raw_int(struct, fieldnum):
+    return cast_to_int(_getfield_raw(struct, fieldnum))
 
-def do_getfield_raw_float(struct, fieldnum, memocast):
-    return cast_to_float(_getfield_raw(struct, fieldnum, memocast))
+def do_getfield_raw_float(struct, fieldnum):
+    return cast_to_float(_getfield_raw(struct, fieldnum))
 
-def do_getfield_raw_ptr(struct, fieldnum, memocast):
-    return cast_to_ptr(_getfield_raw(struct, fieldnum, memocast))
+def do_getfield_raw_ptr(struct, fieldnum):
+    return cast_to_ptr(_getfield_raw(struct, fieldnum))
 
 def do_new(size):
     TYPE = symbolic.Size2Type[size]

Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py	Mon Apr 26 18:44:22 2010
@@ -371,39 +371,63 @@
         else:
             raise NotImplementedError
 
-    def do_getfield_gc(self, structbox, fielddescr):
+##    def do_getfield_gc(self, structbox, fielddescr):
+##        assert isinstance(fielddescr, Descr)
+##        struct = structbox.getref_base()
+##        if fielddescr.typeinfo == REF:
+##            return history.BoxPtr(llimpl.do_getfield_gc_ptr(struct,
+##                                                            fielddescr.ofs))
+##        elif fielddescr.typeinfo == INT:
+##            return history.BoxInt(llimpl.do_getfield_gc_int(struct,
+##                                                            fielddescr.ofs,
+##                                                            self.memo_cast))
+##        elif fielddescr.typeinfo == FLOAT:
+##            return history.BoxFloat(llimpl.do_getfield_gc_float(struct,
+##                                                            fielddescr.ofs))
+##        else:
+##            raise NotImplementedError
+
+    def bh_getfield_gc_i(self, struct, fielddescr):
         assert isinstance(fielddescr, Descr)
-        struct = structbox.getref_base()
-        if fielddescr.typeinfo == REF:
-            return history.BoxPtr(llimpl.do_getfield_gc_ptr(struct,
-                                                            fielddescr.ofs))
-        elif fielddescr.typeinfo == INT:
-            return history.BoxInt(llimpl.do_getfield_gc_int(struct,
-                                                            fielddescr.ofs,
-                                                            self.memo_cast))
-        elif fielddescr.typeinfo == FLOAT:
-            return history.BoxFloat(llimpl.do_getfield_gc_float(struct,
-                                                            fielddescr.ofs))
-        else:
-            raise NotImplementedError
+        return llimpl.do_getfield_gc_int(struct, fielddescr.ofs)
+    bh_getfield_gc_c = bh_getfield_gc_i
+    bh_getfield_gc_u = bh_getfield_gc_i
+    def bh_getfield_gc_r(self, struct, fielddescr):
+        assert isinstance(fielddescr, Descr)
+        return llimpl.do_getfield_gc_ptr(struct, fielddescr.ofs)
+    def bh_getfield_gc_f(self, struct, fielddescr):
+        assert isinstance(fielddescr, Descr)
+        return llimpl.do_getfield_gc_float(struct, fielddescr.ofs)
 
-    def do_getfield_raw(self, structbox, fielddescr):
+##    def do_getfield_raw(self, structbox, fielddescr):
+##        assert isinstance(fielddescr, Descr)
+##        struct = self.cast_int_to_adr(structbox.getint())
+##        if fielddescr.typeinfo == REF:
+##            return history.BoxPtr(llimpl.do_getfield_raw_ptr(struct,
+##                                                             fielddescr.ofs,
+##                                                             self.memo_cast))
+##        elif fielddescr.typeinfo == INT:
+##            return history.BoxInt(llimpl.do_getfield_raw_int(struct,
+##                                                             fielddescr.ofs,
+##                                                             self.memo_cast))
+##        elif fielddescr.typeinfo == FLOAT:
+##            return history.BoxFloat(llimpl.do_getfield_raw_float(struct,
+##                                                             fielddescr.ofs,
+##                                                             self.memo_cast))
+##        else:
+##            raise NotImplementedError
+
+    def bh_getfield_raw_i(self, struct, fielddescr):
         assert isinstance(fielddescr, Descr)
-        struct = self.cast_int_to_adr(structbox.getint())
-        if fielddescr.typeinfo == REF:
-            return history.BoxPtr(llimpl.do_getfield_raw_ptr(struct,
-                                                             fielddescr.ofs,
-                                                             self.memo_cast))
-        elif fielddescr.typeinfo == INT:
-            return history.BoxInt(llimpl.do_getfield_raw_int(struct,
-                                                             fielddescr.ofs,
-                                                             self.memo_cast))
-        elif fielddescr.typeinfo == FLOAT:
-            return history.BoxFloat(llimpl.do_getfield_raw_float(struct,
-                                                             fielddescr.ofs,
-                                                             self.memo_cast))
-        else:
-            raise NotImplementedError
+        return llimpl.do_getfield_raw_int(struct, fielddescr.ofs)
+    bh_getfield_raw_c = bh_getfield_raw_i
+    bh_getfield_raw_u = bh_getfield_raw_i
+    def bh_getfield_raw_r(self, struct, fielddescr):
+        assert isinstance(fielddescr, Descr)
+        return llimpl.do_getfield_raw_ptr(struct, fielddescr.ofs)
+    def bh_getfield_raw_f(self, struct, fielddescr):
+        assert isinstance(fielddescr, Descr)
+        return llimpl.do_getfield_raw_float(struct, fielddescr.ofs)
 
     def do_new(self, size):
         assert isinstance(size, Descr)

Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/model.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/model.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/model.py	Mon Apr 26 18:44:22 2010
@@ -183,10 +183,32 @@
     
     def do_getfield_gc(self, structbox, fielddescr):
         raise NotImplementedError
-    
+
+    def bh_getfield_gc_i(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_gc_c(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_gc_u(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_gc_r(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_gc_f(self, struct, fielddescr):
+        raise NotImplementedError
+
     def do_getfield_raw(self, structbox, fielddescr):
         raise NotImplementedError
 
+    def bh_getfield_raw_i(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_raw_c(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_raw_u(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_raw_r(self, struct, fielddescr):
+        raise NotImplementedError
+    def bh_getfield_raw_f(self, struct, fielddescr):
+        raise NotImplementedError
+
     def do_new(self, sizedescr):
         raise NotImplementedError
 
@@ -198,7 +220,7 @@
 
     def bh_new_array(self, arraydescr, length):
         raise NotImplementedError
-    
+
     def do_setarrayitem_gc(self, arraybox, indexbox, newvaluebox, arraydescr):
         raise NotImplementedError
 

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	Mon Apr 26 18:44:22 2010
@@ -224,6 +224,10 @@
         return a - b
 
     @arguments("i", "i", returns="i")
+    def opimpl_int_mul(self, a, b):
+        return a * b
+
+    @arguments("i", "i", returns="i")
     def opimpl_uint_floordiv(self, a, b):
         c = llop.uint_floordiv(lltype.Unsigned, r_uint(a), r_uint(b))
         return intmask(c)
@@ -351,3 +355,47 @@
     @arguments("d", "r", "i", "r")
     def opimpl_setarrayitem_gc_r(self, arraydescr, array, index, newvalue):
         self.cpu.bh_setarrayitem_gc_r(arraydescr, array, index, newvalue)
+
+    @arguments("r", "d", returns="i")
+    def opimpl_getfield_gc_i(self, struct, fielddescr):
+        return self.cpu.bh_getfield_gc_i(struct, fielddescr)
+    @arguments("r", "d", returns="i")
+    def opimpl_getfield_gc_c(self, struct, fielddescr):
+        return self.cpu.bh_getfield_gc_c(struct, fielddescr)
+    @arguments("r", "d", returns="i")
+    def opimpl_getfield_gc_u(self, struct, fielddescr):
+        return self.cpu.bh_getfield_gc_u(struct, fielddescr)
+    @arguments("r", "d", returns="r")
+    def opimpl_getfield_gc_r(self, struct, fielddescr):
+        return self.cpu.bh_getfield_gc_r(struct, fielddescr)
+    @arguments("r", "d", returns="f")
+    def opimpl_getfield_gc_f(self, struct, fielddescr):
+        return self.cpu.bh_getfield_gc_f(struct, fielddescr)
+
+    opimpl_getfield_gc_i_pure = opimpl_getfield_gc_i
+    opimpl_getfield_gc_c_pure = opimpl_getfield_gc_c
+    opimpl_getfield_gc_u_pure = opimpl_getfield_gc_u
+    opimpl_getfield_gc_r_pure = opimpl_getfield_gc_r
+    opimpl_getfield_gc_f_pure = opimpl_getfield_gc_f
+
+    @arguments("r", "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")
+    def opimpl_getfield_raw_c(self, struct, fielddescr):
+        return self.cpu.bh_getfield_raw_c(struct, fielddescr)
+    @arguments("r", "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")
+    def opimpl_getfield_raw_r(self, struct, fielddescr):
+        return self.cpu.bh_getfield_raw_r(struct, fielddescr)
+    @arguments("r", "d", returns="f")
+    def opimpl_getfield_raw_f(self, struct, fielddescr):
+        return self.cpu.bh_getfield_raw_f(struct, fielddescr)
+
+    opimpl_getfield_raw_i_pure = opimpl_getfield_raw_i
+    opimpl_getfield_raw_c_pure = opimpl_getfield_raw_c
+    opimpl_getfield_raw_u_pure = opimpl_getfield_raw_u
+    opimpl_getfield_raw_r_pure = opimpl_getfield_raw_r
+    opimpl_getfield_raw_f_pure = opimpl_getfield_raw_f

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py	Mon Apr 26 18:44:22 2010
@@ -145,6 +145,7 @@
 
     def __init__(self, translator, policy=None, backendopt=True, CPUClass=None,
                  optimizer=None, **kwds):
+        import py; py.test.skip("XXX")
         pyjitpl._warmrunnerdesc = self   # this is a global for debugging only!
         if policy is None:
             policy = JitPolicy()



More information about the Pypy-commit mailing list