edcbda7e2c 
								
							 
						 
						
							
							
								
								libitm: Introduce target macro TARGET_BEGIN_TRANSACTION_ATTRIBUTE.  
							
							... 
							
							
							
							The attached patch adds the a target specific attribute via the
new target macro TARGET_BEGIN_TRANSACTION_ATTRIBUTE to the
function begin_transaction().  S/390 uses this to set the
soft-float target attribute which is needed to fix a crash with
-m31.
As there seems to be no place in libitm to document internal macros like
USE_HTM_FASTPATH or the new macro, I've put the documentation in a
comment where the macro is used.
2016-03-03  Dominik Vogt  <vogt@linux.vnet.ibm.com>
	* config/s390/target.h (TARGET_BEGIN_TRANSACTION_ATTRIBUTE): Define
	function attribute to disable floating point in begin_transaction() on
	S/390.
	* beginend.cc (begin_transaction): Use
	TARGET_BEGIN_TRANSACTION_ATTRIBUTE.
From-SVN: r233929 
							
						 
						
							2016-03-03 09:31:57 +00:00  
				
					
						
							
							
								 
						
							
								6041f70ae3 
								
							 
						 
						
							
							
								
								libitm: Fix HTM fastpath.  
							
							... 
							
							
							
							* beginend.cc (GTM::gtm_thread::serial_lock): Put on cacheline
	boundary.
	(htm_fastpath): Remove.
	(gtm_thread::begin_transaction): Fix HTM fastpath.
	(_ITM_commitTransaction): Adapt.
	(_ITM_commitTransactionEH): Adapt.
	* libitm/config/linux/rwlock.h (gtm_rwlock): Add htm_fastpath member
	and accessors.
	* libitm/config/posix/rwlock.h (gtm_rwlock): Likewise.
	* libitm/config/posix/rwlock.cc (gtm_rwlock::gtm_rwlock): Adapt.
	* libitm/config/x86/sjlj.S (_ITM_beginTransaction): Fix HTM fastpath.
	* libitm/libitm_i.h (htm_fastpath): Remove declaration.
	* libitm/method-serial.cc (htm_mg): Adapt.
	(gtm_thread::serialirr_mode): Adapt.
	* libitm/query.cc (_ITM_inTransaction, _ITM_getTransactionId): Adapt.
From-SVN: r232735 
							
						 
						
							2016-01-22 16:13:06 +00:00  
				
					
						
							
							
								 
						
							
								e89137cec1 
								
							 
						 
						
							
							
								
								libitm: Fix seq-cst MOs/fences in rwlock.  
							
							... 
							
							
							
							From-SVN: r232353 
							
						 
						
							2016-01-13 21:39:50 +00:00  
				
					
						
							
							
								 
						
							
								629e47295b 
								
							 
						 
						
							
							
								
								libitm: Fix privatization safety interaction with serial mode.  
							
							... 
							
							
							
							From-SVN: r232322 
							
						 
						
							2016-01-13 12:40:34 +00:00  
				
					
						
							
							
								 
						
							
								0d1ed41261 
								
							 
						 
						
							
							
								
								libitm: Remove dead code and data.  
							
							... 
							
							
							
							From-SVN: r232275 
							
						 
						
							2016-01-12 14:57:45 +00:00  
				
					
						
							
							
								 
						
							
								818ab71a41 
								
							 
						 
						
							
							
								
								Update copyright years.  
							
							... 
							
							
							
							From-SVN: r232055 
							
						 
						
							2016-01-04 15:30:50 +01:00  
				
					
						
							
							
								 
						
							
								258c1d0722 
								
							 
						 
						
							
							
								
								Support __cxa_free_exception and fix exception handling.  
							
							... 
							
							
							
							gcc/cp/
	* except.c (do_free_exception): Use transactional wrapper.
	libitm/
	* testsuite/libitm.c++/eh-5.C: New.
	* libitm.h (_ITM_cxa_free_exception): New.
	* libitm.map (_ITM_cxa_free_exception): Add it.
	* libitm.texi: Update ABI docs.
	* libitm_i.h (gtm_transaction_cp::cxa_unthrown): Remove.
	(gtm_transaction_cp::cxa_uncaught_count): Add.
	(gtm_thread::cxa_unthrown): Remove.
	(gtm_thread::cxa_uncaught_count_ptr): Add.
	(gtm_thread::cxa_uncaught_count): Add.
	(gtm_thread::drop_references_allocations): Rename to...
	(gtm_thread::discard_allocation): ... this and adapt.
	(gtm_thread::init_cpp_exceptions): New.
	* beginend.cc (gtm_thread::gtm_thread): Adapt EH handling.
	(gtm_thread::begin_transaction): Likewise.
	(gtm_transaction_cp::save): Likewise.
	(gtm_thread::trycommit): Likewise.
	* eh_cpp.cc: Add overview comments.
	(__cxa_eh_globals, __cxa_get_globals, __cxa_free_exception): Declare.
	(free_any_exception, _ITM_cxa_free_exception): New.
	(gtm_thread::init_cpp_exceptions): Define.
	(_ITM_cxa_allocate_exception, _ITM_cxa_throw): Adapt.
	(_ITM_cxa_begin_catch, _ITM_cxa_end_catch): Likewise.
	(gtm_thread::revert_cpp_exceptions): Likewise.
From-SVN: r230634 
							
						 
						
							2015-11-20 00:10:08 +00:00  
				
					
						
							
							
								 
						
							
								5624e564d2 
								
							 
						 
						
							
							
								
								Update copyright years.  
							
							... 
							
							
							
							From-SVN: r219188 
							
						 
						
							2015-01-05 13:33:28 +01:00  
				
					
						
							
							
								 
						
							
								f93608e6d4 
								
							 
						 
						
							
							
								
								Update copyright years in libitm/  
							
							... 
							
							
							
							From-SVN: r206298 
							
						 
						
							2014-01-02 22:26:00 +00:00  
				
					
						
							
							
								 
						
							
								bec9ec3fc1 
								
							 
						 
						
							
							
								
								Add custom HTM fast path for RTM on x86_64.  
							
							... 
							
							
							
							* libitm_i.h (gtm_thread): Assign an asm name to serial_lock.
	(htm_fastpath): Assign an asm name.
	* libitm.h (_ITM_codeProperties): Add non-ABI flags used by custom
	HTM fast paths.
	(_ITM_actions): Likewise.
	* config/x86/target.h (HTM_CUSTOM_FASTPATH): Enable custom fastpath on
	x86_64.
	* config/x86/sjlj.S (_ITM_beginTransaction): Add custom HTM fast path.
	* config/posix/rwlock.h (gtm_rwlock): Update comments.  Move summary
	field to the start of the structure.
	* config/linux/rwlock.h (gtm_rwlock): Update comments.
	* beginend.cc (gtm_thread::begin_transaction): Add retry policy
	handling for custom HTM fast paths.
From-SVN: r202101 
							
						 
						
							2013-08-30 10:33:41 +00:00  
				
					
						
							
							
								 
						
							
								b1db457bf9 
								
							 
						 
						
							
							
								
								libitm: Fix handling of reentrancy in the HTM fastpath.  
							
							... 
							
							
							
							PR libitm/57643
	* beginend.cc (gtm_thread::begin_transaction): Handle reentrancy in
	the HTM fastpath.
From-SVN: r200250 
							
						 
						
							2013-06-20 16:40:38 +00:00  
				
					
						
							
							
								 
						
							
								75f9527c9b 
								
							 
						 
						
							
							
								
								Update copyright in libitm.  
							
							... 
							
							
							
							From-SVN: r195697 
							
						 
						
							2013-02-03 17:46:11 +00:00  
				
					
						
							
							
								 
						
							
								64fbcc74a3 
								
							 
						 
						
							
							
								
								Add HTM fastpath and use Intel RTM for it on x86.  
							
							... 
							
							
							
							* beginend.cc (htm_fastpath): New.
	(gtm_thread::begin_transaction, _ITM_commitTransaction,
	_ITM_commitTransactionEH): Add HTM fastpath handling.
	* config/linux/rwlock.h (gtm_rwlock.is_write_locked): New.
	* config/posix/rwlock.h (gtm_rwlock.is_write_locked): New.
	* config/x86/target.h (htm_available, htm_init, htm_begin_success,
	htm_begin, htm_commit, htm_abort, htm_abort_should_retry): New.
	* configure.tgt: Add -mrtm to XCFLAGS.
	* method-serial.cc (htm_mg, o_htm_mg, htm_dispatch, dispatch_htm): New.
	(gtm_thread::serialirr_mode): Add HTM fastpath handling.
	* libitm_i.h (htm_fastpath, dispatch_htm): Declare.
	* retry.cc (parse_default_method): Add HTM method parsing.
	(gtm_thread::number_of_threads_changed): Use HTM by default if
	available.
From-SVN: r193369 
							
						 
						
							2012-11-09 17:04:40 +00:00  
				
					
						
							
							
								 
						
							
								a19db3f2e3 
								
							 
						 
						
							
							
								
								libitm: Fix race condition in dispatch choice at transaction begin.  
							
							... 
							
							
							
							libitm/
	* beginend.cc (GTM::gtm_thread::begin_transaction): Move serial lock
	acquisition to ...
	* retry.cc (GTM::gtm_thread::decide_begin_dispatch): ... here.
	(default_dispatch): Make atomic.
	(GTM::gtm_thread::set_default_dispatch): Access atomically.
	(GTM::gtm_thread::decide_retry_strategy): Access atomically and
	use decide_begin_dispatch() if default_dispatch might have changed.
	(GTM::gtm_thread::number_of_threads_changed): Initialize
	default_dispatch here.
From-SVN: r184392 
							
						 
						
							2012-02-20 13:06:07 +00:00  
				
					
						
							
							
								 
						
							
								07b6642b93 
								
							 
						 
						
							
							
								
								libitm: Filter out undo writes that overlap with the libitm stack.  
							
							... 
							
							
							
							PR libitm/51855
	* config/generic/tls.h (GTM::mask_stack_top): New.
	(GTM::mask_stack_bottom): Declare.
	* config/generic/tls.c (GTM::mask_stack_bottom): New.
	* local.cc (gtm_undolog::rollback): Filter out any updates that
	overlap the libitm stack.  Add current transaction as parameter.
	* libitm_i.h (GTM::gtm_undolog::rollback): Adapt.
	* beginend.cc (GTM::gtm_thread::rollback): Adapt.
	* testsuite/libitm.c/stackundo.c: New test.
From-SVN: r183172 
							
						 
						
							2012-01-13 23:45:06 +00:00  
				
					
						
							
							
								 
						
							
								11f30bb0e4 
								
							 
						 
						
							
							
								
								libitm: Optimize undo log.  
							
							... 
							
							
							
							libitm/
	* local.cc (GTM_LB): Use GTM::gtm_undolog.
	(GTM::gtm_thread::drop_references_undolog): Remove.
	(GTM::gtm_thread::commit_undolog,
	GTM::gtm_thread::rollback_undolog): Move to ...
	* libitm_i.h (GTM::gtm_undolog): ...here. New.
	(GTM::gtm_undolog_entry): Remove.
	(GTM::gtm_thread): Adapt.
	* beginend.cc (GTM::gtm_thread::rollback): Adapt.
	(GTM::gtm_thread::trycommit): Adapt.
	* method-serial.cc (serial_dispatch::log): Adapt.
	* method-gl.cc (gl_wt_dispatch::pre_write): Adapt.
	(gl_wt_dispatch::store): Fix likely/unlikely.
	* containers.h (GTM::vector::resize): Add additional_capacity
	parameter and handle it.
	(GTM::vector::resize_noinline): New/adapt.
	(GTM::vector::push): New.
From-SVN: r182992 
							
						 
						
							2012-01-08 14:13:49 +00:00  
				
					
						
							
							
								 
						
							
								c898f7b85f 
								
							 
						 
						
							
							
								
								libitm: Don't enforce privatization safety if already in serial mode.  
							
							... 
							
							
							
							libitm/
	* beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
	privatization safety if already in serial mode.
From-SVN: r182676 
							
						 
						
							2011-12-24 01:42:48 +00:00  
				
					
						
							
							
								 
						
							
								610e390135 
								
							 
						 
						
							
							
								
								libitm: Fix privatization safety during upgrades to serial mode.  
							
							... 
							
							
							
							libitm/
	* beginend.cc (GTM::gtm_thread::restart): Add and handle
	finish_serial_upgrade parameter.
	* libitm.h (GTM::gtm_thread::restart): Adapt declaration.
	* config/linux/rwlock.cc (GTM::gtm_rwlock::write_lock_generic):
	Don't unset reader flag.
	(GTM::gtm_rwlock::write_upgrade_finish): New.
	* config/posix/rwlock.cc: Same.
	* config/linux/rwlock.h (GTM::gtm_rwlock::write_upgrade_finish):
	Declare.
	* config/posix/rwlock.h: Same.
	* method-serial.cc (GTM::gtm_thread::serialirr_mode): Unset reader
	flag after commit or after rollback when restarting.
From-SVN: r182675 
							
						 
						
							2011-12-24 01:42:35 +00:00  
				
					
						
							
							
								 
						
							
								799142bf74 
								
							 
						 
						
							
							
								
								libitm: Fixed conversion to C++11 atomics.  
							
							... 
							
							
							
							libitm/
	* beginend.cc (GTM::gtm_thread::begin_transaction): Add comment.
	(GTM::gtm_thread::try_commit): Changed memory order.
	* config/linux/alpha/futex_bits.h (sys_futex0): Take atomic int
	as parameter.
	* config/linux/x86/futex_bits.h (sys_futex0): Same.
	* config/linux/sh/futex_bits.h (sys_futex0): Same.
	* config/linux/futex_bits.h (sys_futex0): Same.
	* config/linux/futex.cc (futex_wait, futex_wake): Same.
	* config/linux/futex.h (futex_wait, futex_wake): Same.
	* config/linux/rwlock.h (gtm_rwlock::writers,
	gtm_rwlock::writer_readers, gtm_rwlock::readers): Change to atomic
	ints.
	* config/linux/rwlock.cc (gtm_rwlock::read_lock,
	gtm_rwlock::write_lock_generic, gtm_rwlock::read_unlock,
	gtm_rwlock::write_unlock): Fix memory orders and fences.
	* config/posix/rwlock.cc (gtm_rwlock::read_lock,
	gtm_rwlock::write_lock_generic, gtm_rwlock::read_unlock,
	gtm_rwlock::write_unlock): Same.
	* config/linux/rwlock.h (gtm_rwlock::summary): Change to atomic int.
	* method-gl.cc (gl_mg::init, gl_wt_dispatch::memtransfer_static,
	gl_wt_dispatch::memset_static, gl_wt_dispatch::begin_or_restart):
	Add comments.
	(gl_wt_dispatch::pre_write, gl_wt_dispatch::validate,
	gl_wt_dispatch::load, gl_wt_dispatch::store,
	gl_wt_dispatch::try_commit, gl_wt_dispatch::rollback): Fix memory
	orders and fences.  Add comments.
From-SVN: r182674 
							
						 
						
							2011-12-24 01:42:20 +00:00  
				
					
						
							
							
								 
						
							
								36cfbee133 
								
							 
						 
						
							
							
								
								libitm: Conversion to c++11 atomics.  
							
							... 
							
							
							
							* local_atomic: New file.
        * libitm_i.h: Include it.
        (gtm_thread::shared_state): Use atomic template.
        * beginend.cc (GTM::gtm_clock): Use atomic template.
        (global_tid): Use atomic template if 64-bit atomics available.
        (gtm_thread::gtm_thread): Update shared_state access.
        (gtm_thread::trycommit): Likewise.
        (choose_code_path): Update global_tid access.
        * method-gl.cc (gl_mg::orec): Use atomic template.  Update all users.
        * stmlock.h (GTM::gtm_clock): Use atomic template.
        (gtm_get_clock, gtm_inc_clock): Update accesses.
        * config/linux/rwlock.cc (gtm_rwlock::read_lock): Remove
        redundant __sync_synchronize after atomic shared_state access.
        * config/posix/rwlock.cc (gtm_rwlock::read_lock): Likewise.
        (gtm_rwlock::write_lock_generic): Likewise.
        (gtm_rwlock::read_unlock): Likewise.
        * config/alpha/target.h (atomic_read_barrier): Remove.
        (atomic_write_barrier): Remove.
        * config/x86/target.h (atomic_read_barrier): Remove.
        (atomic_write_barrier): Remove.
From-SVN: r182294 
							
						 
						
							2011-12-13 11:11:25 -08:00  
				
					
						
							
							
								 
						
							
								062f93f255 
								
							 
						 
						
							
							
								
								Swap the action and jmpbuf arguments to GTM_longjmp  
							
							... 
							
							
							
							On several ABIs, the first register parameter is the same as
the return value register.  Moving the action parameter first
avoids the need for register shuffling on these targets.
        * libitm_i.h (GTM_longjmp): Swap first and second arguments.
        * beginend.c (_ITM_abortTransaction): Update to match.
        (GTM::gtm_thread::restart): Likewise.
        * config/alpha/sjlj.S (GTM_longjmp): Likewise.
        * config/x86/sjlj.S (GTM_longjmp): Likewise.
From-SVN: r181863 
							
						 
						
							2011-11-30 14:29:33 -08:00  
				
					
						
							
							
								 
						
							
								0a35513e4e 
								
							 
						 
						
							
							
								
								Merge from transactional-memory branch.  
							
							... 
							
							
							
							From-SVN: r181154 
							
						 
						
							2011-11-08 11:13:41 +00:00