[squeak-dev] cog timing issue?
Eliot Miranda
eliot.miranda at gmail.com
Wed Jul 25 21:24:51 UTC 2012
On Wed, Jul 25, 2012 at 11:55 AM, Chris Muller <ma.chris.m at gmail.com> wrote:
> I need your help Eliot. The first time Magma reads an object from the
> db, it compiles a new (anonymous) subclass for write-barrier behavior
> -- so it can send #modified: to the Session when any of its inst vars
> are changed.
>
> The subclass cannot add any new state so how could it know the
> Session? Answer - when the subclass is generated, a #writeBarrier
> accessor is generate into which the session object is hacked into one
> of its literal associations. Like this:
>
> installAccessingOverrides
> class
> compileSilently:
> 'writeBarrier
> ^ Object first'
> classified: 'access'.
> (class methodDictionary at: #writeBarrier)
> literalAt: 2
> put: #Object -> (WeakArray with: barrier)
>
> The above is generating a #writeBarrier method on 'class' which must
> answer the Magma session object ('barrier') so it can handle the
> #modified: logic.
>
> This dreadful hack accomplishes the goal (performance) in the standard
> VM and.. I'm sure it has for some time in Cog too but.. I'm not sure
> when or why this started happening. With Cog 2562 when the object
> sent #writeBarrier, it found the integer 1004867812, and so the
> debugger popped up with "SmallInteger DNU #first". However, when I
> examine the CM literals of the #writeBarrier method, the Magma session
> is in there correctly.
>
> A bit later (minute or so), of just sitting there, me thinking, doing
> nothing, then suddenly "self writeBarrier" works right there in the
> debugger! Initially, my doing that gave me the same error, but then,
> without my doing _anything_ it suddenly returns the correct object we
> stuffed in the generate method above.
>
> At this point I'm able to resume the application, but it shortly
> happens again -- this time with a DIFFERENT object (a character) but,
> once again, the CM shows the correct literal in the explorer and,
> after a moment, "self writeBarrier" stops returning the Character and
> starts returning the correct object.
>
> I thought maybe inadvertently corrupted image so built fresh but it
> still happens every time.
>
> Thanks very much for any insight you can provide.
>
Not sure what this is, but it could be a VM bug. Can you work on creating
a reproducible test case and then send me an image?
>
> - Chris
>
>
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20120725/8d323339/attachment.htm
More information about the Squeak-dev
mailing list
|