Hi Eliot,

There are several other changes in that package that could generate different behavior. Are they correct? They are:

BlockClosure >> value
   used to call primitive 201, now calls 205
   used to check for zero args, now checks for one (!?)

BlockClosure >> value:
   used to call primitive 202, now calls 205

BlockClosure >> value:value:
   used to call primitive 203, now calls 205

BlockClosure >> value:value:value:
   used to call primitive 204, now calls 205

Primitive 205 was previously only used for #value:value:value:value:, so I wonder if this might be a mistake.

Thanks,
Juan Vuletich

Eliot Miranda wrote:


On Tue, Jul 6, 2010 at 12:51 PM, stephane ducasse <stephane.duca...@free.fr <mailto:stephane.duca...@free.fr>> wrote:

    Eliot

    should this fix be applied to pharo?
           http://code.google.com/p/pharo/issues/detail?id=2655


Yes please. Almost everything I'm likely to put in Compiler, Kernel or System on Squeak 4.1 belongs in all dialects using the closure compiler.

    Is there a dependency?


What's happing here is that very old primitive failure code that allowed the closure system to run on old VMs without closure support depended on BlockClosure>>asContext, which had a bug in it. So the changes reflect the bug fix but are enclosed in false ifTrue: [] because they really are obsolete, but the code is retained because its useful documentation of how the closure primitives should work. I hope this makes sense!

best
Eliot

    Stef



_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to