website icon indicating copy to clipboard operation
website copied to clipboard

Conflicting explanation of the object header layout.

Open DANser-freelancer opened this issue 11 months ago • 2 comments

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?

DANser-freelancer avatar Dec 04 '24 21:12 DANser-freelancer

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.

CountBleck avatar Dec 04 '24 23:12 CountBleck

Ok. Would be good to have correct specs on the webite instead of 3 usize with total 12 bytes of space reserved.

DANser-freelancer avatar Dec 05 '24 08:12 DANser-freelancer