On Wed, Mar 2, 2011 at 11:46 AM, Juan Vuletich juan@jvuletich.org wrote:
Hi Folks,
commits@source.squeak.org wrote:
Nicolas Cellier uploaded a new version of Compiler to project The Trunk: http://source.squeak.org/trunk/Compiler-nice.189.mcz
==================== Summary ====================
Name: Compiler-nice.189 Author: nice Time: 13 February 2011, 7:44:38.363 pm UUID: 3f6f02cd-1acf-48de-a388-b5ac55e27055 Ancestors: Compiler-nice.188
Enable cascading of special messages by deoptimizing, thanks Eliot. This is mostly useless, but it removes an arbitrary limitation of the language.
=============== Diff against Compiler-nice.188 ===============
I integrated this nice code in Cuis, and tried:
true ifTrue: [ Transcript cr; show: 'was true' ]; yourself
I found that this works ok with the interpreter but does nothing in Cog. A bug, right?
Yes. But it is in the bytecode compiler, which has generated two blocks, not one:
true ifTrue: [ Transcript cr; show: 'was true' ]; yourself. thisContext method symbolic
45 <71> pushConstant: true 46 <88> dup 47 <8F 00 00 07> closureNumCopied: 0 numArgs: 0 bytes 51 to 57 51 <41> pushLit: Transcript 52 <88> dup 53 <D2> send: cr 54 <87> pop 55 <24> pushConstant: 'was true' 56 <E3> send: show: 57 <7D> blockReturn 58 <8F 00 00 02> closureNumCopied: 0 numArgs: 0 bytes 62 to 63 62 <73> pushConstant: nil 63 <7D> blockReturn 64 <F0> send: ifTrue: 65 <87> pop 66 <D5> send: yourself 67 <87> pop 68 <89> pushThisContext: 69 <D7> send: method 70 <D6> send: symbolic 71 <7C> returnTop
Cheers, Juan Vuletich