[squeak-dev] Re: Creating an image from first principles
Klaus D. Witzel
klaus.witzel at cobss.com
Tue Jul 8 07:08:49 UTC 2008
On Tue, 08 Jul 2008 07:19:45 +0200, Andreas Raab wrote:
> Craig Latta wrote:
>> > ...do the bootstrap: Instantiate the first process, its first
>> context,
>> > the first message. Run it in the simulator to set up the remaining
>> > parts of the kernel image (Delay, ProcessorScheduler etc).
>> I guess I found that last sentence easier said than done. :)
>
> It doesn't strike me as particularly difficiult but then I haven't tried
> it yet. What problems were you running into?
>
>> I don't even think the global lookup issue is all that hard. (I
>> advocate having no system dictionary; keep each class literal in the
>> name slot of the class itself, and have a means of traversing the class
>> tree from a well-known starting point. Scanning through memory for the
>> class and pool literals you want is straightforward.)
>
> Actually, true *globals* (which for the bootstrap means only classes)
> are trivial to deal with: Since the skeleton is created first you have
> the oops for all the globals right there and then, so setting up a
> mapping that the compiler uses for these globals is utterly trivial.
> It's class and pool variables that are tricky
I suggest that vars are the same as in the "blueprint" classes (thank you
Michael for mentioning that term elsewhere :) so, the methods can be
compiled against ordinary classes which serve as blueprint.
And globals can be in a single Sharedpool for the time of creating the
image from first principles (see my patch to SharedPool>>#bindingOf:).
Having said that, globals could alternately be treated as if they where
class variables of Object blueprint. Both variants can avoid having a
Smalltalk global dictionary.
> because even Dictionary>>at: may not exist in the image that you're
> trying to compile so doing the lookup directly in there would be quite
> tricky. It would be doable if one assumed a particular organization of
> the classes (i.e., the n-th iVar is the dictionary of class vars) and
> then interpreted it externally but it seems like an unnecessary
> complication for an initial bootstrap.
Even when doing the blueprint trick, what remains to be done is simulating
additions to the method dictionary.
> Cheers,
> - Andreas
>
More information about the Squeak-dev
mailing list
|