Deoptimized calls fail in Cog (was Re: [squeak-dev] The Trunk: Compiler-nice.189.mcz)

Eliot Miranda eliot.miranda at gmail.com
Wed Mar 2 19:58:58 UTC 2011


On Wed, Mar 2, 2011 at 11:46 AM, Juan Vuletich <juan at jvuletich.org> wrote:

> Hi Folks,
>
> commits at 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20110302/1899c8d5/attachment.htm


More information about the Squeak-dev mailing list