aboutsummaryrefslogtreecommitdiff
path: root/src/preamble.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-02-27 08:04:06 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-02-27 08:04:06 -0800
commit5e6e6f889c7aef090ea1d5aad25b29083afb1036 (patch)
treeb4c441ccd1dbd3f81e34bab81a89b76d0f51a04b /src/preamble.js
parent5516f8fa58d73bc96a7e4ab01d677cdb3eb25bd1 (diff)
parent31186ef9edb06e9bc695fca2c3a14677e8f137a1 (diff)
Merge pull request #884 from vvuk/check-heap-align
Add CHECK_HEAP_ALIGN to perform runtime alignment checks
Diffstat (limited to 'src/preamble.js')
-rw-r--r--src/preamble.js19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/preamble.js b/src/preamble.js
index 6f4b49de..71b123e7 100644
--- a/src/preamble.js
+++ b/src/preamble.js
@@ -150,6 +150,25 @@ function SAFE_HEAP_COPY_HISTORY(dest, src) {
//==========================================
#endif
+#if CHECK_HEAP_ALIGN
+//========================================
+// Debugging tools - alignment check
+//========================================
+function CHECK_ALIGN_8(addr) {
+ assert((addr & 7) == 0, "address must be 8-byte aligned, is " + addr + "!");
+ return addr;
+}
+function CHECK_ALIGN_4(addr) {
+ assert((addr & 3) == 0, "address must be 4-byte aligned, is " + addr + "!");
+ return addr;
+}
+function CHECK_ALIGN_2(addr) {
+ assert((addr & 1) == 0, "address must be 2-byte aligned!");
+ return addr;
+}
+#endif
+
+
#if CHECK_OVERFLOWS
//========================================
// Debugging tools - Mathop overflows