[Squeak-e] adding eventual sending to Croquet's ScriptProcess
andScriptScheduler
Andreas Raab
andreas.raab at gmx.de
Sun Feb 16 14:09:43 CET 2003
> But...there is an issue:
Duh! Obsolete code! Sorry 'bout that - #newScript in both context and symbol
is entirely obsolete and no longer used. You need to use #startScript: for
everything, e.g.,
self startScript:
> [Transcript cr;
> show: 'platformName: ';
> show: ((Smalltalk startScript: #platformName)
> waitUntil: #done;
> result) ]
will work.
Cheers,
- Andreas
> -----Original Message-----
> From: squeak-e-bounces at lists.squeakfoundation.org
> [mailto:squeak-e-bounces at lists.squeakfoundation.org] On
> Behalf Of Robert Withers
> Sent: Sunday, February 16, 2003 3:41 AM
> To: Squeak-E - a capability-secure Squeak
> Subject: Re: [Squeak-e] adding eventual sending to Croquet's
> ScriptProcess andScriptScheduler
>
>
> On Saturday, February 15, 2003, at 10:41 AM, Andreas Raab wrote:
>
> > Rob,
> >
> >> What do you think would be the best way to activate the resolver?
> >
> > Remember the resolver in the process' properties (cheap way to
> > experiment
> > with it - later we may want this to be an iVar) and then use
> > #stopScriptProcess: to notify the resolver (if there is
> one). Seems
> > like the
> > simplest solution to me. One more thing to keep in mind though:
> > #stopScriptProcess: is also invoked from #terminate and you'll
> > probably need
> > something else to notify the resolver that this promise was broken.
>
>
> Andreas, I have integrated eventual sending into the Scripting
> framework. It looks like there may be a reference issue with
> #waitUntil:, since I have to inspect the scriptProcess or the
> results
> are intermittent.
>
> The easy way was an EventualScriptMessageSend, which holds the
> resolver. The #valueWithArguments:event: method computes the result
> and resolves the promise ( or smashes it).
>
> If you load SqueakElib (
> http://swiki.squeakfoundation.org/squeak-e/3 )
> into a *throw away* Croquet image (I modify the Interpreter), then
> load this changeset: (
> http://swiki.squeakfoundation.org/squeak-e/uploads/3/croquet-squeake-
> bridge.cs ).
>
> You can look at the comment of CroquetContext for examples.
>
>
> But...there is an issue:
>
> The problem i am having is that I can't seem to get #waitUntil: to
> work. I need that so that a send of #immediateRef, to a
> promise, will
> result in that script blocking, until the underlying
> computations have
> completed and resolved the promise. This computes intermittent
> results. I believe that the ScriptProcess is going away. So, to
> test I tried building a test out of this:
>
> [Transcript cr;
> show: 'platformName: ';
> show: ((Smalltalk startScript: #platformName)
> waitUntil: #done;
> result) ] newScript resume.
>
> Otherwise it is working well, and I now have a "working" (minus the
> issue above) CroquetPromiseContext>>#immediateRef. :-))))
>
> I am really impressed with the work you have here, Andreas. It's
> really powerful.
>
> cheers!
> rob
>
>
>
>
> Here is the performance dump of a regular smalltalk
> expression and an
> eventual smalltalk expression that is fairly intensive, but it only
> evaluates 4 eventual message sends. The cost of an eventual send is
> between 20 and 80 ms. I need to figure out a way to make these
> measurements more accurate.
>
> The performance ratio is: 1.032
>
>
> Output from straight smalltalk
>
> Morphs with more than 50 instances
> Thumbnail => 118
> PolygonMorph => 139
> BorderedStringMorph => 62
> AlignmentMorph => 253
> ThreePhaseButtonMorph => 61
> SameGameTile => 201
> Morph => 267
> TransformMorph => 58
> StringMorph => 1379
> TileMorph => 58
> ImageMorph => 193
> ScrollBar => 58
> SketchMorph => 157
> RectangleMorph => 611
> IconicButton => 143
> SimpleButtonMorph => 101
> WordGameLetterMorph => 320
> start time: 23985907
> stop time: 23996228
> running time: 10321 ms
>
>
> Output from the eventualCroquetRef
>
> Morphs with more than 50 instances
> Thumbnail => 118
> PolygonMorph => 139
> BorderedStringMorph => 62
> AlignmentMorph => 252
> ThreePhaseButtonMorph => 61
> SameGameTile => 201
> Morph => 267
> TransformMorph => 55
> StringMorph => 1361
> TileMorph => 58
> ImageMorph => 187
> ScrollBar => 55
> SketchMorph => 153
> RectangleMorph => 588
> IconicButton => 139
> SimpleButtonMorph => 101
> WordGameLetterMorph => 320
> start time: 24012995
> stop time: 24022998
> running time: 10003 ms
>
>
> _______________________________________________
> Squeak-e mailing list
> Squeak-e at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/squeak-e
>
More information about the Squeak-e
mailing list