Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r76728:36bfec91449e
Date: 2015-04-06 18:39 +0200
http://bitbucket.org/pypy/pypy/changeset/36bfec91449e/

Log:    Meh, see comment.

diff --git a/rpython/memory/gctransform/shadowstack.py 
b/rpython/memory/gctransform/shadowstack.py
--- a/rpython/memory/gctransform/shadowstack.py
+++ b/rpython/memory/gctransform/shadowstack.py
@@ -464,6 +464,13 @@
 
     def customtrace(gc, obj, callback, arg):
         obj = llmemory.cast_adr_to_ptr(obj, SHADOWSTACKREFPTR)
+        index = obj.fsindex
+        if index > 0:
+            # Haaaaaaack: fullstack_cache[] is just an integer, so it
+            # doesn't follow the SHADOWSTACKREF when it moves.  But we
+            # know this customtrace() will be called just after the
+            # move.  So we fix the fullstack_cache[] now... :-/
+            fullstack_cache[index] = lltype.cast_ptr_to_int(obj)
         addr = obj.top
         start = obj.base
         while addr != start:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to