[squeak-dev] Lightweight Classes

Bergel, Alexandre bergel at iam.unibe.ch
Wed Nov 19 03:06:12 UTC 2008


Hi Hernán,

I get an error when trying to load your file: '5 instvar names are  
required'
Strange.

Alexandre


On 16 Nov 2008, at 22:58, Hernán Morales Durand wrote:

> Dear all,
>  In the attachment you will find an implementation of Lightweight  
> Classes for Squeak that follows the original paper "Debugging  
> Objects" of Hinkle et al. However I was unable to set up the #class  
> method in the LightweightClass to answer the real class of the  
> lightwighted object, is this possible currently in Squeak?.
>
> What I did:
> -Created the LightweightClass as in the old VisualWorks  
> implementation. The only difference here was CompiledMethod's cannot  
> be copied, so I used #clone.
> -Created and installed an UnstoredMethod (a CompiledMethod subclass)  
> in the LightweightClass's methodDictionary. Since I want to store  
> the source code but not through the changes log, I borrowed the  
> MethodWrappers idea of storing the state (sourceCode) in a class  
> instance variable, and compile without logging. The methods I  
> borrowed from MW are:
>
> -#copyWithTrailerBytes: - I think the superimplementor in  
> CompiledMethod could use "self class" to avoid reimplementors.
> -#tweakClassFormat - which set the format but I don't know why and  
> cannot find documentation on this.
> -#objectAt: I suspected the class literal was stored in the literal  
> frame everytime I accepted a method, but for the simple test below  
> still answer the LightweightClass and not the real class.
>
> Here is the test:
>
> | aDate |
> aDate := Date today.
> aDate becomeLightweight.
> aDate dispatchingClass compile: 'day ^43' notifying: nil.
> aDate day. " 43 (works) "
> aDate perform: #class. " Date ------> (works) "
> aDate class. " {Date} ------> LightweightClass (wrong) "
>
> Any hint would be appreciated.
> Best regards.
>
> Hernán
>
> PS: Just to avoid duplicate efforts, I wrote a LightweightClasses  
> Browser which will be available as soon as I find a solution to the  
> problem above.
> <LightweightClasses-hfm.1.mcz>

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.








More information about the Squeak-dev mailing list