[pypy-svn] r23119 - pypy/branch/genc-gc-refactoring
cfbolz at codespeak.net
cfbolz at codespeak.net
Tue Feb 7 19:27:17 CET 2006
Author: cfbolz
Date: Tue Feb 7 19:27:16 2006
New Revision: 23119
Modified:
pypy/branch/genc-gc-refactoring/gc.py
Log:
(mwh, cfbolz):
implement the new operations that the gctransformer introduces
Modified: pypy/branch/genc-gc-refactoring/gc.py
==============================================================================
--- pypy/branch/genc-gc-refactoring/gc.py (original)
+++ pypy/branch/genc-gc-refactoring/gc.py Tue Feb 7 19:27:16 2006
@@ -273,20 +273,6 @@
eresult,
err)
- def OP_GC_PUSH_ALIVE(self, funcgen, op, err):
- expr = funcgen.expr(op.args[0])
- if expr == 'NULL':
- return ''
- defnode = self.db.gettypedefnode(op.args[0].concretetype.TO)
- assert defnode.gcheader is not None
- return 'pypy_IncRf_%s(%s);' % (defnode.barename, expr)
-
- def OP_GC_POP_ALIVE(self, funcgen, op, err):
- expr = funcgen.expr(op.args[0])
- defnode = self.db.gettypedefnode(op.args[0].concretetype.TO)
- assert defnode.gcheader is not None
- return 'pypy_DecRf_%s(%s);' % (defnode.barename, expr)
-
def OP_GC_PUSH_ALIVE_PYOBJ(self, funcgen, op, err):
expr = funcgen.expr(op.args[0])
if expr == 'NULL':
@@ -296,7 +282,15 @@
def OP_GC_POP_ALIVE_PYOBJ(self, funcgen, op, err):
expr = funcgen.expr(op.args[0])
return 'Py_XDECREF(%s);' % expr
-
+
+ def OP_GC_CALL_RTTI_DESTRUCTOR(self, funcgen, op, err):
+ args = [funcgen.expr(v) for v in op.args]
+ line = '%s(%s);' % (args[0], ', '.join(args[1:]))
+ return line
+
+ def OP_GC_FREE(self, funcgen, op, err):
+ args = [funcgen.expr(v) for v in op.args]
+ return 'OP_FREE(%s);' % (args[0], )
class RefcountingRuntimeTypeInfo_OpaqueNode(ContainerNode):
nodekind = 'refcnt rtti'
More information about the Pypy-commit
mailing list