StartupCache

StartupCache is a replacement for Fastload.

It is meant to reside in the profile directory and provide a convenient API to store continuous chunks of data in it.

I think we can use the JAR format for this

Things I want:

  • Index of entries in the file(at the end of it)
  • Per entry-checksum like jars
  • No multiplexing, writing to the cache will write into a memory buffer and it will be serialized on .Close() (one close() per module).
  • Single mmaped cache file to reduce file io
  • Will be suitable for everything that's currently stored in fastload + manifest cache + pref cache + etc
  • Cache should have a string table that cache's consumers can share.

Cache's filename should be:

startup.<endianness>.<wordsize>.cache to avoid issues with people moving profiles between machines


We hope to achieve some performance wins by having 1 file and contiguous buffers. Also, hopefully we can cache more stuff.

Proposed interface is just char* getBuffer(id), writeBuffer(id, buf, length). Clients take care of their own serialization/deserialization.