[self-interest] embedding based prototype languages

James McCartney asynth at io.com
Fri Nov 8 05:57:36 UTC 2002


Thanks for the long reply. It seems like you've made things fast for 
common execution, but have made creating and modifying prototypes very 
expensive in time and space.

> The drawback is that sometimes an object has to change maps after a
> programming change (added or removed a slot) and that means changing
> the object's pointer, which means scanning the whole memory to update
> any references to the old pointer.
[...]
> When you make any programming
> changes the new string is used to build a new map, which is then
> compiled and finally any of the object's children are recompiled.
>
> Besides the source string, a map contains a table and machine language
> code. This table includes a two word entry for every single selector
> defined in the system. There can be up to 4096 selectors, so this per
> map table can grow to be as much as 16KB!! But like I said, I have
> memory to spare. The tables for all maps are always exactly the same
> size and they grow as you define new selectors.

So this is the equivalent in a class based system of having a full all 
classes by all selectors matrix.

> And about the resends, the compiler simply inlines the parent's source
> for the method into the spot where the resend was.

So you can't reassign a method slot? Or if you do you have to rebuild 
the map of all children..

-- 
--- james mccartney   james at audiosynth.com   <http://www.audiosynth.com>
SuperCollider - a real time synthesis programming language for the 
PowerMac.
<ftp://www.audiosynth.com/pub/updates/SC2.2.16.sea.hqx>




More information about the Self-interest mailing list