Serilizing blocks

Stephan Rudlof sr at evolgo.de
Thu Oct 24 15:28:52 UTC 2002


Stephen Pair wrote:
> You need to store the frame size in order to know what size context to
> recreate, then you need to add a way of instantiating an empty
> ContextPart of the appropriate size (large or small frame).  Add a
> method for primitive 71 to do this and be careful when using it.  And of
> course, you'll also be serializing the home context, receiver and all of
> the other instance variables (you have to be able to serialize a
> MethodContext as well as a BlockContext).

And if you have references to outer vars - e.g. Transcript - you have to
serialize them, too... or a problem... ;-)

Stephan

> 
> Then you also need to be able to serialize compiled methods.  For this,
> you'll need to store the number of literals in addition to the rest of
> its state and use #newMethod:header: when materializing.  When bringing
> the all of this back into the image, your BlockContext will be referring
> to a compiled method that doesn't exist in any method dictionary, but it
> will be perfectly useable in (for example) a SortedCollection.
> 
> Now, of course, it's debatable how appropriate it is to have compiled
> methods lying around in your image that do not exist in any method
> dictionary.  You could also conceivably store information about the
> class and selector where the compiled method is installed and try to
> match that up when materializing the block.  The class could be
> determined by looking at the reciever of the block's home context, but
> unfortunately, I don't think the selector is readily available.
> 
> - Stephen
> 
> 
>>-----Original Message-----
>>From: squeak-dev-admin at lists.squeakfoundation.org 
>>[mailto:squeak-dev-admin at lists.squeakfoundation.org] On 
>>Behalf Of Aaron J Reichow
>>Sent: Thursday, October 24, 2002 10:33 AM
>>To: squeak-dev at lists.squeakfoundation.org
>>Subject: RE: Serilizing blocks
>>
>>
>>On Thu, 24 Oct 2002, Stephen Pair wrote:
>>
>>
>>>There's nothing that prevents you from serializing blocks.  
>>
>>It's just 
>>
>>>that it's a little more work.
>>
>>Well, no inherent problem to doing so. But, SmartRefStream 
>>won't let you do it, and because of that, there seems to be 
>>problems putting blocks in to Magma and MinneStore.  Authors 
>>of both have stated that blocks will be storable in their 
>>databases when Squeak has real block closures.
>>
>>If it's possible, how can it be done?
>>
>>Regards,
>>Aaron
>>
>>  Aaron Reichow  ::  UMD ACM Pres  ::  
>>http://www.d.umn.edu/~reic0024/ "one has a > moral 
>>responsibility to disobey unjust laws"  :: m. l. king jr.
>>
>>
>>
>>
> 
> 
> 
> 


-- 
Stephan Rudlof (sr at evolgo.de)
   "Genius doesn't work on an assembly line basis.
    You can't simply say, 'Today I will be brilliant.'"
    -- Kirk, "The Ultimate Computer", stardate 4731.3




More information about the Squeak-dev mailing list