[pypy-svn] r65853 - in pypy/branch/pyjitpl5/pypy/jit: backend/llgraph metainterp

arigo at codespeak.net arigo at codespeak.net
Sun Jun 21 19:50:21 CEST 2009


Author: arigo
Date: Sun Jun 21 19:50:20 2009
New Revision: 65853

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py
   pypy/branch/pyjitpl5/pypy/jit/metainterp/history.py
Log:
* added a __slots__ to AbstractDescr.
* mark Float as unsupported, even if its size is not too large (on
  64-bit machines).


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/llgraph/runner.py	Sun Jun 21 19:50:20 2009
@@ -116,11 +116,12 @@
     def _compile_branch(self, c, operations, var2index):
         for op in operations:
             llimpl.compile_add(c, op.opnum)
-            if isinstance(op.descr, Descr):
-                llimpl.compile_add_descr(c, op.descr.ofs, op.descr.type)
-            if self.is_oo and isinstance(op.descr, (OODescr, MethDescr)):
+            descr = op.descr
+            if isinstance(descr, Descr):
+                llimpl.compile_add_descr(c, descr.ofs, descr.type)
+            if self.is_oo and isinstance(descr, (OODescr, MethDescr)):
                 # hack hack, not rpython
-                c._obj.externalobj.operations[-1].descr = op.descr
+                c._obj.externalobj.operations[-1].descr = descr
             for x in op.args:
                 if isinstance(x, history.Box):
                     llimpl.compile_add_var(c, var2index[x])
@@ -282,6 +283,7 @@
         return history.BoxInt(llimpl.do_unicodegetitem(0, string, index))
 
     def do_getarrayitem_gc(self, args, arraydescr):
+        assert isinstance(arraydescr, Descr)
         array = args[0].getptr_base()
         index = args[1].getint()
         if arraydescr.type == 'p':
@@ -291,6 +293,7 @@
                                                                self.memo_cast))
 
     def do_getfield_gc(self, args, fielddescr):
+        assert isinstance(fielddescr, Descr)
         struct = args[0].getptr_base()
         if fielddescr.type == 'p':
             return history.BoxPtr(llimpl.do_getfield_gc_ptr(struct,
@@ -300,6 +303,7 @@
                                                             fielddescr.ofs,
                                                             self.memo_cast))
     def do_getfield_raw(self, args, fielddescr):
+        assert isinstance(fielddescr, Descr)
         struct = self.cast_int_to_adr(args[0].getint())
         if fielddescr.type == 'p':
             return history.BoxPtr(llimpl.do_getfield_raw_ptr(struct,
@@ -324,6 +328,7 @@
         return history.BoxPtr(llimpl.do_new_array(size.ofs, count))
 
     def do_setarrayitem_gc(self, args, arraydescr):
+        assert isinstance(arraydescr, Descr)
         array = args[0].getptr_base()
         index = args[1].getint()
         if arraydescr.type == 'p':
@@ -335,6 +340,7 @@
                                           self.memo_cast)
 
     def do_setfield_gc(self, args, fielddescr):
+        assert isinstance(fielddescr, Descr)
         struct = args[0].getptr_base()
         if fielddescr.type == 'p':
             newvalue = args[1].getptr_base()
@@ -345,6 +351,7 @@
                                       self.memo_cast)
 
     def do_setfield_raw(self, args, fielddescr):
+        assert isinstance(fielddescr, Descr)
         struct = self.cast_int_to_adr(args[0].getint())
         if fielddescr.type == 'p':
             newvalue = args[1].getptr_base()
@@ -375,6 +382,7 @@
         llimpl.do_unicodesetitem(0, string, index, newvalue)
 
     def do_call(self, args, calldescr):
+        assert isinstance(calldescr, Descr)
         func = args[0].getint()
         for arg in args[1:]:
             if (isinstance(arg, history.BoxPtr) or

Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/history.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/history.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/history.py	Sun Jun 21 19:50:20 2009
@@ -24,6 +24,8 @@
     if TYPE is lltype.Void:
         return "void"
     elif isinstance(TYPE, lltype.Primitive):
+        if TYPE in (lltype.Float, lltype.SingleFloat):
+            raise NotImplementedError("type %s not supported" % TYPE)
         # XXX fix this for oo...
         if rffi.sizeof(TYPE) > rffi.sizeof(lltype.Signed):
             raise NotImplementedError("type %s is too large" % TYPE)
@@ -112,6 +114,8 @@
         return '%s' % self
 
 class AbstractDescr(AbstractValue):
+    __slots__ = ()
+
     def handle_fail_op(self, metainterp, fail_op):
         raise NotImplementedError
     def compile_and_attach(self, metainterp, new_loop):



More information about the Pypy-commit mailing list