diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-02-27 08:04:06 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-02-27 08:04:06 -0800 |
commit | 5e6e6f889c7aef090ea1d5aad25b29083afb1036 (patch) | |
tree | b4c441ccd1dbd3f81e34bab81a89b76d0f51a04b /src/preamble.js | |
parent | 5516f8fa58d73bc96a7e4ab01d677cdb3eb25bd1 (diff) | |
parent | 31186ef9edb06e9bc695fca2c3a14677e8f137a1 (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.js | 19 |
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 |