[pypy-svn] r29928 - in pypy/dist/pypy: annotation jit/hintannotator

arigo at codespeak.net arigo at codespeak.net
Mon Jul 10 20:15:00 CEST 2006


Author: arigo
Date: Mon Jul 10 20:14:58 2006
New Revision: 29928

Modified:
   pypy/dist/pypy/annotation/annrpython.py
   pypy/dist/pypy/jit/hintannotator/annotator.py
Log:
Make RPythonAnnotator a new-style class, and fix a problem with that.


Modified: pypy/dist/pypy/annotation/annrpython.py
==============================================================================
--- pypy/dist/pypy/annotation/annrpython.py	(original)
+++ pypy/dist/pypy/annotation/annrpython.py	Mon Jul 10 20:14:58 2006
@@ -16,7 +16,7 @@
 
 FAIL = object()
 
-class RPythonAnnotator:
+class RPythonAnnotator(object):
     """Block annotator for RPython.
     See description in doc/translation.txt."""
 
@@ -714,22 +714,28 @@
         return annmodel.SomeSlice(start, stop, step)
 
 
-def _registeroperations(ns, model):
-    # All unary operations
-    for opname in model.UNARY_OPERATIONS:
-        exec """
+    def _registeroperations(cls, model):
+        # All unary operations
+        d = {}
+        for opname in model.UNARY_OPERATIONS:
+            fnname = 'consider_op_' + opname
+            exec """
 def consider_op_%s(self, arg, *args):
     return arg.%s(*args)
-""" % (opname, opname) in globals(), ns
-    # All binary operations
-    for opname in model.BINARY_OPERATIONS:
-        exec """
+""" % (opname, opname) in globals(), d
+            setattr(cls, fnname, d[fnname])
+        # All binary operations
+        for opname in model.BINARY_OPERATIONS:
+            fnname = 'consider_op_' + opname
+            exec """
 def consider_op_%s(self, arg1, arg2, *args):
     return pair(arg1,arg2).%s(*args)
-""" % (opname, opname) in globals(), ns
+""" % (opname, opname) in globals(), d
+            setattr(cls, fnname, d[fnname])
+    _registeroperations = classmethod(_registeroperations)
 
 # register simple operations handling
-_registeroperations(RPythonAnnotator.__dict__, annmodel)
+RPythonAnnotator._registeroperations(annmodel)
 
 
 class CannotSimplify(Exception):

Modified: pypy/dist/pypy/jit/hintannotator/annotator.py
==============================================================================
--- pypy/dist/pypy/jit/hintannotator/annotator.py	(original)
+++ pypy/dist/pypy/jit/hintannotator/annotator.py	Mon Jul 10 20:14:58 2006
@@ -1,4 +1,4 @@
-from pypy.annotation.annrpython import RPythonAnnotator, _registeroperations
+from pypy.annotation.annrpython import RPythonAnnotator
 from pypy.jit.hintannotator import model as hintmodel
 from pypy.jit.hintannotator.bookkeeper import HintBookkeeper
 from pypy.rpython.lltypesystem import lltype
@@ -39,4 +39,4 @@
         pass
 
 
-_registeroperations(HintAnnotator.__dict__, hintmodel)
+HintAnnotator._registeroperations(hintmodel)



More information about the Pypy-commit mailing list