[pypy-commit] pypy quad-color-gc: Replace dereference hack

ntruessel pypy.commits at gmail.com
Tue Aug 23 09:36:55 EDT 2016


Author: Nicolas Truessel <ntruessel at njsm.de>
Branch: quad-color-gc
Changeset: r86447:227535124264
Date: 2016-08-23 15:36 +0200
http://bitbucket.org/pypy/pypy/changeset/227535124264/

Log:	Replace dereference hack

diff --git a/rpython/memory/gctransform/qcgcframework.py b/rpython/memory/gctransform/qcgcframework.py
--- a/rpython/memory/gctransform/qcgcframework.py
+++ b/rpython/memory/gctransform/qcgcframework.py
@@ -23,8 +23,8 @@
         #     s_gcref], s_gcref)
         #
         def invokecallback(root, visit_fn):
-            obj = llop.qcgc_dereference(llmemory.Address, root)
-            visit_fn(obj)
+            ref = llmemory.cast_adr_to_ptr(root, rffi.VOIDPP)
+            visit_fn(llmemory.cast_ptr_to_adr(ref[0]))
         def pypy_trace_cb(obj, visit_fn):
             gc.trace(obj, invokecallback, visit_fn)
         pypy_trace_cb.c_name = "pypy_trace_cb"
diff --git a/rpython/rtyper/lltypesystem/lloperation.py b/rpython/rtyper/lltypesystem/lloperation.py
--- a/rpython/rtyper/lltypesystem/lloperation.py
+++ b/rpython/rtyper/lltypesystem/lloperation.py
@@ -517,7 +517,6 @@
     # __________ qcgc operations __________
     'qcgc_allocate':    LLOp(canmallocgc=True),
     'qcgc_collect':     LLOp(), # XXX: No allocations, so no canmallocgc ?
-    'qcgc_dereference': LLOp(),
 
     # __________ weakrefs __________
 
diff --git a/rpython/translator/c/funcgen.py b/rpython/translator/c/funcgen.py
--- a/rpython/translator/c/funcgen.py
+++ b/rpython/translator/c/funcgen.py
@@ -959,8 +959,3 @@
 
     def OP_QCGC_COLLECT(self, op):
         return 'qcgc_collect();'
-
-    def OP_QCGC_DEREFERENCE(self, op):
-        arg = self.expr(op.args[0])
-        result = self.expr(op.result)
-        return '%s = *((object_t **) %s);' % (result, arg)


More information about the pypy-commit mailing list