[pypy-svn] r9550 - pypy/dist/pypy/translator
tismer at codespeak.net
tismer at codespeak.net
Tue Mar 1 17:43:17 CET 2005
Author: tismer
Date: Tue Mar 1 17:43:16 2005
New Revision: 9550
Modified:
pypy/dist/pypy/translator/geninterplevel.py
Log:
repaired geninterp to ignore old-style classes, again.
Still no support for pickled state.
Modified: pypy/dist/pypy/translator/geninterplevel.py
==============================================================================
--- pypy/dist/pypy/translator/geninterplevel.py (original)
+++ pypy/dist/pypy/translator/geninterplevel.py Tue Mar 1 17:43:16 2005
@@ -536,8 +536,15 @@
self.latercode.append((gen, self.debugstack))
def nameof_instance(self, instance):
- name = self.uniquename('ginst_' + instance.__class__.__name__)
- cls = self.nameof(instance.__class__)
+ klass = instance.__class__
+ name = self.uniquename('ginst_' + klass.__name__)
+ cls = self.nameof(klass)
+ if hasattr(klass, '__base__'):
+ base_class = builtin_base(instance)
+ base = self.nameof(base_class)
+ else:
+ base_class = None
+ base = cls
def initinstance():
content = instance.__dict__.items()
content.sort()
@@ -550,23 +557,11 @@
print >> sys.stderr, "Problem while generating %s of %r" % (
name, instance)
raise
- if isinstance(instance, Exception):
- # special-case for exception instances: wrap them directly
- self.initcode.append('_ins = %s()\n'
- 'm.%s = space.wrap(_ins)' % (
- instance.__class__.__name__, name))
- else:
- if isinstance(instance.__class__, type):
- self.initcode.append(
- '_new = space.getattr(%s, %s)\n'
- '_tup = space.newtuple([%s])\n'
- 'm.%s = space.call(_new, _tup)' % (
- cls, self.nameof('__new__'), cls, name))
- else:
- self.initcode.append(
- '_tup = space.newtuple([%s])\n'
- 'm.%s = space.call(space.w_instance, _tup)' % (
- cls, name))
+ self.initcode.append(
+ '_new = space.getattr(%s, %s)\n'
+ '_tup = space.newtuple([%s])\n'
+ 'm.%s = space.call(_new, _tup)' % (
+ cls, self.nameof('__new__'), cls, name))
self.later(initinstance())
return name
More information about the Pypy-commit
mailing list