This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [trans-mem] Add gl_wt TM method.
- From: Richard Henderson <rth at redhat dot com>
- To: Torvald Riegel <triegel at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 19 Oct 2011 12:17:20 -0700
- Subject: Re: [trans-mem] Add gl_wt TM method.
- References: <1314657235.14756.1465.camel@triegel.csb>
> Add support for TM-method-specific begin code.
>
> * libitm_i.h (GTM::gtm_restart_reason): Re-arrange and clean up
> declarations.
> * dispatch.h (GTM::abi_dispatch::begin_or_restart): New.
> * method-serial.cc: Implement begin_or_restart().
> * beginend.cc (GTM::gtm_thread::begin_transaction): Call
> dispatch-specific begin_or_restart().
> (GTM::gtm_thread::restart): Same.
Ok except,
> + // Run dispatch-specific restart code. Retry until we succeed.
> + GTM::gtm_restart_reason rr;
> + while ((rr = disp->begin_or_restart())
> + != NUM_RESTARTS)
Please add
NO_RESTART = NUM_RESTARTS
(or it's own number *after* NUM_RESTARTS, or -1, or something)
to the enumeration and use that name. Using num_restarts here is confusing.
> Fixed gtm_thread::serialirr_mode to actually use serialirr, not serial.
>
> * method-serial.cc (GTM::gtm_thread::serialirr_mode): Fixed: Use
> serial-irrevocable dispatch, not serial.
Ok.
> Do not free transaction-local memory when committing a nested transaction.
>
> * alloc.cc (commit_allocations_2): Do not free transaction-local
> memory when committing a nested transaction.
Ok.
> Handle re-initialization of the current method group.
>
> * retry.cc (GTM::gtm_thread::decide_retry_strategy): Handle
> re-initialization of the current method group.
> * libitm_i.h (GTM::gtm_restart_reason): Add restart reason for this.
Ok.
> Undo log is used for both thread-local and shared data.
>
> * libitm_i.h: Renamed gtm_local_undo to gtm_undolog_entry.
> (GTM::gtm_thread): Renamed local_undo to undolog. Renamed
> undolog-related member functions from *_local to *_undolog.
> * local.cc (gtm_thread::commit_undolog): Same.
> * beginend.cc (GTM::gtm_thread::trycommit): Same.
> (GTM::gtm_thread::rollback): Roll back undolog before
> dispatch-specific rollback.
Ok.
> Ensure privatization safety if requested by a TM method.
>
> * beginend.cc (GTM::gtm_thread::trycommit): Ensure privatization
> safety if requested by a TM method.
> * dispatch.h (GTM::abi_dispatch::trycommit): Add parameter for
> privatization safety.
> * method-serial.cc: Same.
Ok.
> Add gl_wt TM method.
>
> * libitm_i.h: Add gl_wt dispatch.
> * retry.cc (parse_default_method): Same.
> * method-gl.cc: New file.
> * Makefile.am: Use method-gl.cc.
> * Makefile.in: Rebuild.
Ok with...
> Fix gl_wt commit/rollback when serial lock has been acquired.
>
> * method-gl.cc (gl_wt_dispatch::trycommit): Fix interaction with
> gtm_thread::shared_state when the serial lock is acquired.
> (gl_wt_dispatch::rollback): Same.
... this merged with the previous commit.
> Fix TLS read accesses on Linux/x86.
>
> * config/linux/x86/tls.h (abi_disp): Make TLS slot read volatile.
> (gtm_thr): Same.
Ok.
r~