> If this was implemented in higher-levels of abstraction we could introduce > different tagging schemes to support locatives, flonums, etc. This could lead > to more language features, reduced memory usage and garbage on smaller > hardware and better performance on 64-bit machines that don't need the lower 3 > bits of the machine word for object addresses due to alignment. > > Hardcoded 1-bit tags doesn't give much room for future ideas or any other > immediates. I could continue the work into libid, but I haven't looked much > at Jolt yet; I'm not sure where to start. > > Preliminary results as applied to libid here: > > http://kurtstephens.com/node/60
32-bit machines also don't need the lower 3 bits if you align all objects by 8 bytes. In my Church-State implementation I adopted some of the conventions used by the SBCL lisp implementation, see the tags here http://subvert-the-dominant-paradigm.net/repos/hgwebdir.cgi/bootstrap/file/3ec558141ebc/church/runtime/church_types.state and the sbcl page describing the tags: http://sbcl-internals.cliki.net/tag%20bit The main rationale is that fixnums can be added without shifting (and can be used to index word arrays without shifting). In general I agree with Adrian Kuhn (who commented on your blog post) that the benefits of one tagging scheme versus another are doubtful. In the context of idc or my language implementation, there are many avenues for optimization open for exploration which will likely yield more benefit. John _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
