[pypy-svn] r26255 - pypy/dist/pypy/translator/cl
dialtone at codespeak.net
dialtone at codespeak.net
Mon Apr 24 12:44:05 CEST 2006
Author: dialtone
Date: Mon Apr 24 12:44:03 2006
New Revision: 26255
Modified:
pypy/dist/pypy/translator/cl/gencl.py
Log:
use a class instead of a struct to represent a class
Modified: pypy/dist/pypy/translator/cl/gencl.py
==============================================================================
--- pypy/dist/pypy/translator/cl/gencl.py (original)
+++ pypy/dist/pypy/translator/cl/gencl.py Mon Apr 24 12:44:03 2006
@@ -69,9 +69,9 @@
# cls is really type of Instance
name = cls._name
fields = cls._fields
- fieldnames = fields.keys()
+ fieldnames = ['('+field+')' for field in fields.keys()]
field_declaration = ' '.join(fieldnames)
- class_declaration = "(defstruct %s %s)" % (name, field_declaration)
+ class_declaration = "(defclass %s () (%s))" % (name, field_declaration)
return class_declaration
def op_new(self, result, _):
@@ -81,7 +81,7 @@
else:
declaration = self.declare_class(cls)
self.gen.declarations.append(declaration)
- yield "(setf %s (make-%s))" % (result, cls._name)
+ yield "(setf %s (make-instance '%s))" % (result, cls._name)
def op_oosend(self, result, *ignore):
method = self.args[0].value
@@ -93,16 +93,15 @@
yield "(setf %s %s)" % (result, code)
def op_oogetfield(self, result, obj, _):
- clsname = self.args[0].concretetype._name
fieldname = self.args[1].value
- yield "(setf %s (%s-%s %s))" % (result, clsname, fieldname, obj)
+ yield "(setf %s (slot-value %s '%s))" % (result, obj, fieldname)
def op_oosetfield(self, result, obj, _, value):
clsname = self.args[0].concretetype._name
fieldname = self.args[1].value
if fieldname == "meta": # XXX
raise StopIteration
- yield "(setf (%s-%s %s) %s)" % (clsname, fieldname, obj, value)
+ yield "(setf (slot-value %s '%s) %s)" % (obj, fieldname, value)
class ListImpl:
More information about the Pypy-commit
mailing list