[Vm-dev] [ANN] ImageWriter, the SystemTracer's son

Guillermo Polito guillermopolito at gmail.com
Thu Apr 26 11:00:23 UTC 2012


First public push of the first step of the hazelnut GSoC project :)

*In a nutshell*

For those who didn't know SystemTracer (the father):
It is a tool that traces a graph of objects and writes an image from it.

ImageWriter is a refactored, renamed and repackaged version of
SystemTracer2 with the following changes:
- The image format can be provided as a parameter.
- You have to provide an SmalltalkImage object as root to write the image
(so in the future we can write bootstrap with this).
- The object format was reified in objects.  So the code is easier to
understand + change, and people can learn how are our objects in memory
easily :D.

Right now, only 32 bit image format is supported.

*Structure*

- ImageWriter-Core has the image formats and the image writer in itself
- ImageWriter-ObjectFormats contains objects that represent the memory
layout of the objects and it's headers.
- ImageWriter-Tests has some tests.

*Tests done*

 - Only tested in Pharo-1.4
 - There are specific tests written for the size and headers of the objects
 - Also, I've written a Pharo-1.4 image and then run the tests in the
copied image.  Only one failure compared to the original :)

*Known Bugs :)*

 - WeakRegistryTest>>#testFinalizationWithOnFork is failing, and when I run
it manually it works :/.  In the image I use to write, it does not happen,
only in the clone.
 - When opening the new image, the window is too small.  It is not
respecting the original image size.  Don't know yet what is the problem.

*How To Download*

Gofer it
    squeaksource3: 'ImageWriter';
    package: 'ImageWriter-Core';
    package: 'ImageWriter-ObjectFormats';
    package: 'ImageWriter-Tests';
    load

*How to Use it*

  HzImageWriter new
    format: HzCogImageFormat new; "or HzInterpreterImageFormat new"
    imageFileName: 'someFile.image';
    onInitializeDo: [ "Some initialization?" ];   "this is optional,
probably the same as an startup script, probably nonsense"
    writeImage: Smalltalk  "Yes, we provide the our lovely global Smalltak,
but any SmalltalkImage instance could be"

*Next steps on this direction*

 - support to write an isolated image different from the host one (I'll
know what I need later, hehe)
 - class comments!
 - metacello configuration
 - better api :)

*Links*

http://ss3.gemstone.com/ss/ImageWriter.html


Cheers,
Guille
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20120426/1b1b3dd9/attachment.htm


More information about the Vm-dev mailing list