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