Hi Collin,
I am currently working on a binary mechanism saving for Monticello. I am about to release it.
Cheers, Alexandre
On Sun, Jun 06, 2004 at 08:32:55PM -0500, Colin Putney wrote:
On Jun 5, 2004, at 9:17 PM, Lex Spoon wrote:
The first step would be to create a binary format for distributing Squeak code that would be faster to load than fileOuts - ie, decompress the AST and generate byte code without having to do any parsing. Beyond that would be modifying the interpreter to execute the binary format directly.
Note that there are differences between compressing for distribution and compressing to save space in an image. In the former case you need to go all the way down to bytes, but in the latter you can choose to use object pointers in some places. One place this would likely help is in encoding symbols; you can store #nextPut: as a 4-byte object pointer instead of an 8+ byte string "n e x t P u t :".
Agreed. The paper I cited earlier mentions replacing strings in the AST with indexes into a string table, as the same strings tend to appear in several places in the tree. So the only real difference would be the table used to intern symbols - for distribution a local symbol table would be included in the file; within the image, we'd just use the regular symbol table.
I suppose there would be some processing required to load a slim binary method from a file into the equivalent of a CompiledMethod. References to shared variables would be resolved, literals converted to objects, symbols re-interned etc.
Colin