[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