Hello,
The RTL branch now has infrastructure for toplevel and module refs, which is very exciting. Unfortunately, I can't figure out how to use it. :-(
In particular, I've been looking at module/system/vm/rtl.scm, and there are two things I don't understand about cache cells.
1. How do I choose the scope of a cache cell? It seems like making it the name of the lambda I'm in would be fine, but that's not what the examples in rtl.test do.
2. How do different toplevel-refs share cache cells? A comment says that they will, but the emit-cache-cell code doesn't seem to do any checking. Does that still need to be implemented?
Oh, and as long as I'm at it,
3. I see that the 'toplevel-ref' instruction in vm-engine.c expects a variable object as its cache, but the 'cached-toplevel-ref' instruction *appears* to be passing it a cache cell. I say "appears" because I see that in intern-constant, cache cells are special-case objects that aren't actually cached. So is a cache cell only a compile-time entity? How do they work, anyway?
Thanks in advance,
Noah