On 12 April 2010 18:30, Fernando olivero <oliverof@lu.unisi.ch> wrote:
On Apr 12, 2010, at 5:16 PM, Igor Stasenko wrote:
On 12 April 2010 17:43, Fernando olivero <oliverof@lu.unisi.ch> wrote:
Good idea! I had a similar idea when initially worked on Alien loader.
I think that what is needed also is remove the dependency with the array, i mean explicitly calling the indexes make the image crash if you didn't had the  assumed special object array size.
For example: Â Â Â Â Smalltalk registerSpecialObject: myObject with: aName
    And later you reference that special object by aName instead of an index to the array.
So it would be easier to load/unload the packages that extend the special objects array, because there would be no explicit dependency to indexes.
Yeah, that would be nice. But this will require VM changes.. and therefore is doomed :) Also, this could impact the VM speed significantly, because its using special object quite frequently. Imagine replacing a simple index-based lookup with name(string) based.
Hi Igor, i wasn't speaking of an on-image API change.
For example if you introduced the API you mentioned we could replace
Utilities>> initializeClosures     "Eliminate the prototype BlockContext from the specialObjectsArray.  The VM doesn't use it. This paves the way for removing BlockCOntext altogether and merging ContextPart and MethodContext into e.g. Context."     (Smalltalk specialObjectsArray at: 38) class == BlockContext         ifTrue:[Smalltalk specialObjectsArray at: 38 put: nil].
With
Utilities>> initializeClosures     ......     (Smalltalk hasSpecialObjectNamed: #BlockContext)         ifTrue:[ Smalltalk unregisterSpecialObjectNamed: #BlockContext ].     ....
Ah you mean associating indexes with corresponding names, so code can use a nice-looking names instead of bare indexes? But then who is responsible for providing these associations? Somewhere you have to put things like: BlockContextIndex := 38. so, then later you can do nice: Smalltalk unregisterSpecialObjectNamed: #BlockContextIndex The problem is, that we don't know these names beforehead. So, should a newly loaded package also define a new index names then? Like Smalltalk registerSpecialObjectIndex: 55 named: #MyName. and then to register an object, it should do: Smalltalk specialObjectAt: #MyName put: MySpecialObject. ?
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Best regards, Igor Stasenko AKA sig.