On 03/04/2013, at 2:36 AM, Wim Lewis wrote: > > Right now, the only flag that the Felix runtime seems to act on is > gc_flags_conservative. The compiler sets gc_flags_immobile for static > objects, which are both immobile, and persistent in the way that the > foreign pointers are not, but it doesn't look like that flag has an > effect on the runtime's behavior.
Immobile was introduced when I was implementing a compactor. Small mobile objects went into an arena which could be compacted. Big objects and immobiles ones were separately allocated. However my implementation introduced complexity esp. integration with C and seemed to reduce performance instead of improving it so I threw it out. The immobile flag is a legacy of that experiment. > Looking at the code I wasn't sure what the intended purpose of the > serialization code is. Is it for sending types between processes, > compacting GC, saving state to disk? Foreign types often won't be > serializable, eg if they have complex internal state that can't be > extracted easily or if they wrap some kind of resource, so I didn't > worry about it too much. In the greater scheme of things serialisation allows for mobility and persistence. Mobile across networks, persistent across restarts. The actual implementation is a just a proof of principle hack. It works for many types, but not Judy arrays. Roughly speaking you can take some data and serialise it, so that the same program can reload the data on a restart or another machine. By data i mean say a list of arrays of pointers to trees of doubles, i.e. a collection of objects connected by pointers such that every pointer in any object points into one of the objects (i.e. its a transitive closure). The constraint "same program" arises from needing a pointer to the shape object (RTTI) and might be fixed if we could get some unique names other than pointers for the shape objects. More on this later perhaps. -- john skaller skal...@users.sourceforge.net http://felix-lang.org ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language