>     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~

Reply via email to