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

Reply via email to