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.
Fernando
On Apr 12, 2010, at 4:17 PM, Igor Stasenko wrote:
> Hello,
>
> i attempted to load Alien-Core package into trunk image, and it failed.
>
> One of the problem is override of recreateSpecialObjectsArray method..
>
> I wonder, maybe we should design a nicer API for extending/reserving
> slots in special objects array,
> so it won't require overriding this method by every package which
> needs to extend special objects, like FFI or Alien.
>
> Another aspect of replacing this method is , that it makes problematic
> to unload such package, in case one wants to unload it.
>
> So, my proposal is to add a simple API to SmalltalkImage class, and in
> order to install additional special objects one should do like:
>
> MyClass class>>initialize
>
> Smalltalk registerSpecialObject: myObject at: 55.
> Smalltalk registerSpecialObject: myObject at: 56.
> ...
>
> or:
>
> Smalltalk registerSpecialObjects: #( x y z) startingAt: 56.
>
> upon package unload, a reverse scheme should be supported:
>
>
> MyClass class>>unload
>
> Smalltalk unregisterSpecialObjectAt: 55.
> Smalltalk unregisterSpecialObjectAt: 56.
> ...
>
> or:
>
> Smalltalk unregisterSpecialObjects: 3 startingAt: 56.
>
>
> what you think?
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project