Login
You're viewing the felin.social public feed.
  • Nov 11, 2026, 4:42 AM

    The fun(*) part is what happens when the cache is full but we want to load a dynamic library. If no cache pages are available, the DLL manager uses the same borrow mechanism to temporarily evict a page from the cache and use the resulting free memory for the DLL code it reads from disk. When the DLL code returns, the DLL manager re-reads the evicted cache page from disk and no one is the wiser.

    (*) not guaranteed, actual fun may vary

    💬 1🔄 1⭐ 6

Replies

  • Nov 11, 2026, 4:48 AM

    I'm skipping a lot of complexity here. The cache manager also tracks several "active" pages, like "the page containing the Z-program counter" i.e. the game code our interpreter is currently executing. It would be bad if that page disappeared! Hilarity would not ensue! In theory we could make it work by ensuring the page's existence before parsing the next opcode, but that would be a huge unnecessary slowdown in the optimized inner parser loop. Much better to just not evict it in the first place.

    💬 1🔄 1⭐ 4
  • Nov 11, 2026, 4:58 AM

    This is the CRAFT. This is the GOOD STUFF. This is the WHOLE THING.

    💬 0🔄 2⭐ 10