[pypy-svn] r7389 - pypy/trunk/src/pypy/translator
mwh at codespeak.net
mwh at codespeak.net
Thu Nov 18 17:34:07 CET 2004
Author: mwh
Date: Thu Nov 18 17:34:06 2004
New Revision: 7389
Modified:
pypy/trunk/src/pypy/translator/genc.py
Log:
Assorted large and small hacks to allow compilation to finish.
Doesn't work, of course, but hey, it's a start.
Modified: pypy/trunk/src/pypy/translator/genc.py
==============================================================================
--- pypy/trunk/src/pypy/translator/genc.py (original)
+++ pypy/trunk/src/pypy/translator/genc.py Thu Nov 18 17:34:06 2004
@@ -10,6 +10,8 @@
from pypy.translator.simplify import remove_direct_loops
from types import FunctionType
+from pypy.objspace.std.restricted_int import r_int, r_uint
+
# ____________________________________________________________
def uniquemodulename(name, SEEN={}):
@@ -197,11 +199,15 @@
return name
def nameof_classobj(self, cls):
- if issubclass(cls, Exception) and cls.__module__ == 'exceptions':
- return 'PyExc_%s'%cls.__name__
+ if issubclass(cls, Exception):
+ if cls.__module__ == 'exceptions':
+ return 'PyExc_%s'%cls.__name__
+ else:
+ assert cls.__name__ == "OperationError"
+ return 'PyExc_%s'%cls.__name__
+
name = self.uniquename('gcls_' + cls.__name__)
- bases = [base for base in cls.__bases__ if base is not object]
- basenames = [self.nameof(base) for base in bases]
+ basenames = [self.nameof(base) for base in cls.__bases__]
def initclassobj():
content = cls.__dict__.items()
content.sort()
@@ -213,6 +219,7 @@
# XXX some __NAMES__ are important... nicer solution sought
#raise Exception, "unexpected name %r in class %s"%(key, cls)
if isinstance(value, FunctionType) and value not in self.translator.flowgraphs and self.translator.frozen:
+ print value
continue
yield 'INITCHK(SETUP_CLASS_ATTR(%s, "%s", %s))' % (
@@ -225,7 +232,7 @@
self.initcode.append('INITCHK(%s = PyObject_CallFunction((PyObject*) &PyType_Type,'
%(name,))
self.initcode.append('\t\t"s(%s){}", "%s"%s))'
- %("O"*len(bases), cls.__name__, baseargs))
+ %("O"*len(basenames), cls.__name__, baseargs))
self.latercode.append(initclassobj())
return name
@@ -244,6 +251,8 @@
float: 'PyFloat_Type',
type: 'PyType_Type',
complex:'PyComplex_Type',
+ r_int: 'PyInt_Type',
+ r_uint: 'PyInt_Type',
}
def nameof_type(self, cls):
More information about the Pypy-commit
mailing list