So it turns out that dynamically-sized frames are quite tricky to get right with GC. Essentially, when crawling the stack, the GC needs to rerun all of the dynamic size and alignment calculations in order to determine the layout of the frame so that it can find the roots. LLVM has no support for this.

Note that this problem is similar to the issue with dynamically-sized frames and stack growth.

There are different ways to handle this problem (monomorphization being an especially attractive one, I think), but it seems to me that the simplest solution for a 0.1 release to just have GC bail out when it discovers a dynamically-sized frame on the stack. Is this okay with others?

Patrick
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to