Re: building an image
"Dave Raymer" <[email protected]>
| Newsgroups | gmane.comp.lang.smalltalk.strongtalk |
|---|---|
| Message-ID | <[email protected]> |
Oliver, Thanks for the response, your description mirrors pretty much my understanding to date as well. thanks, the other dave On 3/5/07, oe <[email protected]> wrote: > > > Hello, > > I'm still trying to figure out, like a high level model of the VM. The > available documentation doesn't help me much here, I have to say, and > it took some time to get into this. So not sure what you mean exactly > with > > > trying to sort out how the image gets built so I can track the > > entrypoint into the runtime environment and see what how the UI gets > > loaded. > > , but I'll try to explain briefly what I've found out about how the VM > starts into the GUI. > > - VM starts in shell.cpp, initialization (bootstrap.cpp, mainly > bootstrap::parse_file()) > - in process.cpp: VMProcess::activate_system(). This is where things > get interesting (and difficult, at least for me ;). The VM process > tries to retrieve a 'Delta level Processor' (see comments there) from > the system dictionary, which was (supposedly) previously loaded from > the image by the bootstrap code. I guess that the OOPs (processOop > etc.) involved are actually C++ representations of Smalltalk classes/ > objects stored in the image (if this makes sense). You can inspect the > Smalltalk code by opening Strongtalk, then Browse->All Classes- > >Processor(->ProcessorScheduler). > - then, the "initial process" is created (new DeltaProcess) to call > the "start" method of scheduler just created (a method written in > Smalltalk, see Strongtalk class browser: Class ProcessorScheduler- > >Instance side->restricted->start). > - the actual call to "start" originates in the delta process once it > is run (that is, control is transfered by the scheduler): process.cpp > DeltaProcess::launch_delta, then delta.cpp Delta::call, all the way > down to interpreter_asm.asm call_delta, where the actual call takes > place. So I assume this is the point where Smalltalk code takes over > and drives further initialization of the system and GUI. > - also, if you look at the Smalltalk classes, especially > ExternalProxy, External* and Win32, I believe that there is a lot of > platform specific code written in Smalltalk, using Windows DLL calls > to interface with the OS (hence all the dll stuff/primitives in the C+ > + code)... just speculating, though! > > So, that's about my quick tour of the VM startup, hope it helps -- or > maybe I've just missed the point of your post? I haven't even manage > to build a new image file from within the Strongtalk GUI, but it's > been a while.Some information about the image file format and its > contents would definitely be helpful; I have to look at this again > when time permits. > > Oliver > > > > > -- A man's greatest treasure is his wife, she is a gift from the Lord - Proverbs 18:22 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Strongtalk-general" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/strongtalk-general?hl=en -~----------~----~----~----~------~----~------~--~---