Commits

Armin Rigo committed b832e86

Missing transactionsafe. Add a no_collect at a place where it used
to collect (because of stm_become_inevitable()).

  • Participants
  • Parent commits a8d2c3d
  • Branches stmgc-c7

Comments (0)

Files changed (2)

File rpython/jit/backend/llsupport/jitframe.py

 from rpython.rlib.objectmodel import specialize
 from rpython.rlib.debug import ll_assert
 from rpython.rlib.objectmodel import enforceargs
-from rpython.rlib.rgc import stm_is_enabled
+from rpython.rlib import rgc
 
 SIZEOFSIGNED = rffi.sizeof(lltype.Signed)
 IS_32BIT = (SIZEOFSIGNED == 4)
 GCMAP = lltype.Array(lltype.Unsigned)
 NULLGCMAP = lltype.nullptr(GCMAP)
 
+@rgc.no_collect
 @enforceargs(None, int, int)
 def jitframeinfo_update_depth(jfi, base_ofs, new_depth):
     #
-    if stm_is_enabled():
+    if rgc.stm_is_enabled():
         from rpython.rlib.atomic_ops import bool_cas
         # careful here, 'jfi' has 'stm_dont_track_raw_accesses'
         while True:

File rpython/rlib/atomic_ops.py

 
 
 bool_cas = rffi.llexternal('pypy_bool_cas', [llmemory.Address]*3, lltype.Bool,
-                           compilation_info=eci, macro=True, _nowrapper=True)
+                           compilation_info=eci, macro=True, _nowrapper=True,
+                           transactionsafe=True)
 fetch_and_add = rffi.llexternal('pypy_fetch_and_add', [llmemory.Address,
                                                        lltype.Signed],
                                 lltype.Signed, compilation_info=eci,
-                                macro=True, _nowrapper=True)
+                                macro=True, _nowrapper=True,
+                                transactionsafe=True)