[pypy-commit] pypy gc-minimark-pinning: transform gc support

fijal noreply at buildbot.pypy.org
Fri Apr 13 18:21:59 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: gc-minimark-pinning
Changeset: r54339:175be1a2c933
Date: 2012-04-13 17:27 +0200
http://bitbucket.org/pypy/pypy/changeset/175be1a2c933/

Log:	transform gc support

diff --git a/pypy/rpython/memory/gctransform/framework.py b/pypy/rpython/memory/gctransform/framework.py
--- a/pypy/rpython/memory/gctransform/framework.py
+++ b/pypy/rpython/memory/gctransform/framework.py
@@ -446,6 +446,10 @@
                                            [s_gc,
                                             annmodel.SomeInteger(nonneg=True)],
                                            annmodel.s_None)
+        self.pin_ptr = getfn(GCClass.pin,
+                             [s_gc, annmodel.SomeAddress()], annmodel.s_None)
+        self.unpin_ptr = getfn(GCClass.unpin,
+                               [s_gc, annmodel.SomeAddress()], annmodel.s_None)
 
         self.write_barrier_ptr = None
         self.write_barrier_from_array_ptr = None
@@ -747,6 +751,14 @@
         hop.genop("direct_call", [self.can_move_ptr, self.c_const_gc, v_addr],
                   resultvar=op.result)
 
+    def gct_gc_pin(self, hop):
+        op = hop.spaceop
+        hop.genop("direct_call", [self.pin_ptr, self.c_const_gc, op.args[0]])
+
+    def gct_gc_unpin(self, hop):
+        op = hop.spaceop
+        hop.genop("direct_call", [self.unpin_ptr, self.c_const_gc, op.args[0]])
+
     def gct_shrink_array(self, hop):
         if self.shrink_array_ptr is None:
             return GCTransformer.gct_shrink_array(self, hop)


More information about the pypy-commit mailing list