summaryrefslogtreecommitdiff
path: root/macosx
diff options
context:
space:
mode:
authorColin McEwan <colin.mcewan@gmail.com>2021-06-30 09:16:28 +0100
committerGitHub <noreply@github.com>2021-06-30 09:16:28 +0100
commitdff7fa4fa8d25a8d3f21f4445a6496fd263e4a52 (patch)
tree2027b0dea584a4587fb65f31beeeee3de014957a /macosx
parent0fe68adecccd5a2884ed9c955d1c58e6566546ba (diff)
downloadjack2-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.h4
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);
}