diff options
author | Rickard Green <[email protected]> | 2012-03-15 11:26:59 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2012-03-15 11:26:59 +0100 |
commit | 7484721f847e95380e66456b4a55e08481b570d8 (patch) | |
tree | 901e2be05873981e78ef135abf2fadb323ca4cfd /erts/emulator | |
parent | db9c249a0dd1c948f9bcbc47df166c13e7856357 (diff) | |
parent | 2ce895809ba59bfd2b62b913f80648793c615fc9 (diff) | |
download | otp-7484721f847e95380e66456b4a55e08481b570d8.tar.gz otp-7484721f847e95380e66456b4a55e08481b570d8.tar.bz2 otp-7484721f847e95380e66456b4a55e08481b570d8.zip |
Merge branch 'rickard/barriers/OTP-9922' into maint
* rickard/barriers/OTP-9922:
Remove newly introduced excessive barrier in erts_thr_progress_later()
Fix implementation with ddrb barriers
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/erl_thr_progress.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_thr_progress.h b/erts/emulator/beam/erl_thr_progress.h index 1bbc49993e..a71724b813 100644 --- a/erts/emulator/beam/erl_thr_progress.h +++ b/erts/emulator/beam/erl_thr_progress.h @@ -138,6 +138,7 @@ ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_prgr_read_acqb__(ERTS_THR_PRGR_ATOMIC *a ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_prgr_read_mb__(ERTS_THR_PRGR_ATOMIC *atmc); ERTS_GLB_INLINE int erts_thr_progress_is_managed_thread(void); +ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_progress_current_to_later__(ErtsThrPrgrVal val); ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_progress_later_than(ErtsThrPrgrVal val); ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_progress_later(void); ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_progress_current(void); @@ -218,9 +219,8 @@ erts_thr_progress_is_managed_thread(void) } ERTS_GLB_INLINE ErtsThrPrgrVal -erts_thr_progress_later_than(ErtsThrPrgrVal val) +erts_thr_progress_current_to_later__(ErtsThrPrgrVal val) { - ERTS_THR_MEMORY_BARRIER; if (val == (ERTS_THR_PRGR_VAL_WAITING-((ErtsThrPrgrVal)2))) return ((ErtsThrPrgrVal) 0); else if (val == (ERTS_THR_PRGR_VAL_WAITING-((ErtsThrPrgrVal)1))) @@ -230,10 +230,17 @@ erts_thr_progress_later_than(ErtsThrPrgrVal val) } ERTS_GLB_INLINE ErtsThrPrgrVal +erts_thr_progress_later_than(ErtsThrPrgrVal val) +{ + ERTS_THR_MEMORY_BARRIER; + return erts_thr_progress_current_to_later__(val); +} + +ERTS_GLB_INLINE ErtsThrPrgrVal erts_thr_progress_later(void) { ErtsThrPrgrVal val = erts_thr_prgr_read_mb__(&erts_thr_prgr__.current); - return erts_thr_progress_later_than(val); + return erts_thr_progress_current_to_later__(val); } ERTS_GLB_INLINE ErtsThrPrgrVal |