Hi Marcus,
On Thu, Jul 3, 2014 at 8:51 AM, Marcus Denker <[email protected]> wrote: > Hi, > > If we have meta-object describing (and thus having the power to change the > semantics of) instance variables, > we need the same for Globals. > > I think the easiest is to just re-use the object hat is already there: the > “binding”, that is, the association from > the dictionary where the global lives (e.g. the classPool for class vars, > Smalltalk globals for true globals, and so on). > > SystemVersion bindingOf: ‘Current' > > The VM just cares that it is an assoiation (actually, it just care that > there are two fields, but the rest of the image cares > about value and key…) > > -> we can make a subclass of Association > -> we can have the compiler forward code generation to the object that > describes the global > -> we can add a nice MOP API: #read and #write: (instead of #value and > #value:) > -> Programmers can subclass the GlobalVariable and change #read and #write > like they want (or override > the code gen methods) as in Slots. > One thing I think is worth-while is having the compiler inline read-only globals, especially classes. Most classes never change, and even if they do, become: means that references to them (including in machine code) get updated, so there's little downside. The only drawback is that you can not add an instance variables, I think, > to check… maybe it even works? > If not, there are ways around that e.g. using some fancy Slot that does > not need an ivar but uses a weak dictionary > in a class variable, for example). > Since the VM doesn't look beyond the second field it doesn't care if you add inst vars. It only expects the value field to be the second inst var; it never asks for the size of the association or anything like that. Remember that both key and value are fixed inst vars. Thus: it would be fairly easy to have the class vars be as flexible as the > slots… and then e.g. you will be able > to put breakpoints and watchers on class vars. You could even define > globals with special behaviour the same > way as you do with Slots. > > Marcus > > > -- best, Eliot
