This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [trans-mem] Add gl_wt TM method.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]