website
website copied to clipboard
Conflicting explanation of the object header layout.
https://www.assemblyscript.org/runtime.html#memory-layout says mmInfo is at -20 type usize and gcInfo is at -16 type usize. I know usize is platform dependent pointer size so it can be i32 or i64, but the assemblyscript header layout only has 4 bytes of space for both of those.
It's unclear what happens to object headers on different platforms. Does the header stretch? Does it force truncated to i32 pointers?
The provided numbers are correct when compiling with 32-bit memories, which is the only address size AS currently supports. We don't support memory64 yet, to my knowledge. mmInfo is indeed a usize, meaning it will be 8 bytes long in memory64, but gcInfo is a u32, which is 4 bytes long no matter what.
Ok. Would be good to have correct specs on the webite instead of 3 usize with total 12 bytes of space reserved.