Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r70185:2b49d01603f9
Date: 2014-03-23 09:03 +0100
http://bitbucket.org/pypy/pypy/changeset/2b49d01603f9/

Log:    Test and fix

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
@@ -425,6 +425,7 @@
     'stm_id':                 LLOp(sideeffects=False),
     'stm_identityhash':       LLOp(canfold=True),
     'stm_addr_get_tid':       LLOp(canfold=True),
+    'stm_get_root_stack_top': LLOp(sideeffects=False),
     'stm_become_inevitable':  LLOp(canmallocgc=True),
     'stm_become_globally_unique_transaction': LLOp(canmallocgc=True),
     'stm_push_root':          LLOp(),
diff --git a/rpython/translator/stm/funcgen.py 
b/rpython/translator/stm/funcgen.py
--- a/rpython/translator/stm/funcgen.py
+++ b/rpython/translator/stm/funcgen.py
@@ -211,6 +211,11 @@
 def stm_ignored_stop(funcgen, op):
     return '/* stm_ignored_stop */'
 
+def stm_get_root_stack_top(funcgen, op):
+    result = funcgen.expr(op.result)
+    return '%s = (%s)&stm_thread_local.shadowstack;' % (
+        result, cdecl(funcgen.lltypename(op.result), ''))
+
 
 ##def stm_initialize(funcgen, op):
 ##    return '''stm_initialize();
@@ -306,11 +311,6 @@
 ##    result = funcgen.expr(op.result)
 ##    return '%s = (%s)&stm_active;' % (
 ##        result, cdecl(funcgen.lltypename(op.result), ''))
-    
-##def stm_get_root_stack_top(funcgen, op):
-##    result = funcgen.expr(op.result)
-##    return '%s = (%s)&stm_shadowstack;' % (
-##        result, cdecl(funcgen.lltypename(op.result), ''))
 
 ##def stm_get_adr_of_private_rev_num(funcgen, op):
 ##    result = funcgen.expr(op.result)
diff --git a/rpython/translator/stm/test/test_ztranslated.py 
b/rpython/translator/stm/test/test_ztranslated.py
--- a/rpython/translator/stm/test/test_ztranslated.py
+++ b/rpython/translator/stm/test/test_ztranslated.py
@@ -1,7 +1,7 @@
 import py
 from rpython.rlib import rstm, rgc, objectmodel
 from rpython.rlib.debug import debug_print
-from rpython.rtyper.lltypesystem import lltype, rffi
+from rpython.rtyper.lltypesystem import lltype, llmemory, rffi
 from rpython.rtyper.lltypesystem.rclass import OBJECTPTR
 from rpython.rtyper.lltypesystem.lloperation import llop
 from rpython.translator.stm.test.support import CompiledSTMTests
@@ -393,6 +393,7 @@
             prebuilt.foo = 43
             debug_print(objectmodel.current_object_addr_as_int(prebuilt))
             llop.get_write_barrier_failing_case(rffi.VOIDP)
+            llop.gc_adr_of_root_stack_top(llmemory.Address)
             assert llop.gc_can_move(lltype.Bool, prebuilt) == False
             return 0
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to