diff options
author | Colin McEwan <colin.mcewan@gmail.com> | 2021-06-30 09:16:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-30 09:16:28 +0100 |
commit | dff7fa4fa8d25a8d3f21f4445a6496fd263e4a52 (patch) | |
tree | 2027b0dea584a4587fb65f31beeeee3de014957a /macosx | |
parent | 0fe68adecccd5a2884ed9c955d1c58e6566546ba (diff) | |
download | jack2-dff7fa4fa8d25a8d3f21f4445a6496fd263e4a52.tar.gz |
Fix alignment of fields for atomic accesses (#761)
* Assert alignment is suitable for atomic accesses
* Move fields and pad to meet alignment constraints
* Add padding to JackEngineControl to account for inherited data
* Parenthesise padding length for clarity
* Revert "Parenthesise padding length for clarity"
This reverts commit 1f757b9ece5e3b032743c6c5ac49e83c3928e3de.
* Revert "Add padding to JackEngineControl to account for inherited data"
This reverts commit 3d8c7d83ad9483280f623171af7e40ccc76cef38.
* Revert "Move fields and pad to meet alignment constraints"
This reverts commit ff631bbbdc2279df05f3a18dd44e8fd68be2e04d.
* Assure alignment by using 'alignas' on fields
Diffstat (limited to 'macosx')
-rw-r--r-- | macosx/JackAtomic_os.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/macosx/JackAtomic_os.h b/macosx/JackAtomic_os.h index de635dee..5b2715a4 100644 --- a/macosx/JackAtomic_os.h +++ b/macosx/JackAtomic_os.h @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define __JackAtomic_APPLE__ #include "JackTypes.h" +#include <cassert> #if defined(__ppc__) || defined(__ppc64__) @@ -67,8 +68,11 @@ static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* ad #else +#include <stdio.h> static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) { + // Assert pointer is 32-bit aligned + assert(((long)addr & (sizeof(int)-1)) == 0); return __sync_bool_compare_and_swap ((UInt32*)addr, value, newvalue); } |