Hi Juan, On Wed, Jul 7, 2010 at 5:24 AM, Juan Vuletich <juan@jvuletich.org> wrote:
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.
Quite right, this is a mistake. I was careless copy-pasting the fix between them. I've committed fixes to trunk. In the VM these primitive numbers all bind to the same primitive so there was no visible effect. Thanks for checking! best Eliot
Thanks, Juan Vuletich
Eliot Miranda wrote:
On Tue, Jul 6, 2010 at 12:51 PM, stephane ducasse < stephane.ducasse@free.fr <mailto:stephane.ducasse@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