[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