On Nov 16, 2012, at 8:02 PM, Marcus Denker <marcus.denker@inria.fr> wrote:
On Nov 16, 2012, at 6:55 PM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
While I love the idea of sharing the systemDictionary class binding in the method to gain immediate update in case of change I was questioning myself if we could not gain from not having (for example to get parametrized modules).
The point is that we are not constantly changing classes especially when not programming but running program.
The alternative to the current scheme would be to not hard-code the class at all in the method at compile time.
Instead of looking up the class and compiling the shared literal association, we could compile a message send to the current environment.
self class environment at: #NameOfClass
And it should be noted that this could be evaluated at Jit-compile time... the same is true for ivar offsets. There is no reason why these should be visible at the image level. The image could talk about names and let the runtime translator infrastucture do the lookups needed for making a static version that is fast.
And it should be noted that we don't loose anything: -> Undeclareds would disappear. Using non-existing classes leads to a runtime error, like sending non-existing messages. -> It would be slower in the pure-interpreter case. But anyone who knows me knows that I want to get rid of bytecode as a user-visible artefact... this means, the interpreter would either be an AST interpreter or it would "JIT" the AST into the virtual processor instructions before running. So: the way to go. Marcus -- Marcus Denker -- http://marcusdenker.de