[squeak-dev] Re: [Pharo-project] #recreateSpecialObjectsArray woes

Igor Stasenko siguctua at gmail.com
Mon Apr 12 15:40:27 UTC 2010


On 12 April 2010 18:30, Fernando olivero <oliverof at lu.unisi.ch> wrote:
>
>
>
> On Apr 12, 2010, at 5:16 PM, Igor Stasenko wrote:
>
>> On 12 April 2010 17:43, Fernando olivero <oliverof at 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 at lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



-- 
Best regards,
Igor Stasenko AKA sig.



More information about the Squeak-dev mailing list