<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">Hi, there.<div class="mb_sig"></div><div><br></div><div>The encoder for Sista cannot tell about references to instance variables that are behind compiled blocks.</div><div><br></div><div><div><b>Object subclass: #MyExampleClass</b></div><div><b><span class="Apple-tab-span" style="white-space:pre">       </span>instanceVariableNames: 'field'</b></div></div><div><b><span class="Apple-tab-span" style="font-size: 13.3333px;white-space: pre">  </span>...</b></div><div><b>MyExampleClass >> #foobar</b></div><div><b>   ^ [field] value</b></div><div><br></div><div>This is the problem:</div><div><br></div><div><b>(MyExampleClass >> #foobar) readsField: 1.  "false"</b></div><div><br></div><div>Works fine if:</div><div><br></div><div><div style="font-size: 13.3333px"><b>MyExampleClass >> #foobar</b></div><div style="font-size: 13.3333px"><b>   ^ field</b></div><div style="font-size: 13.3333px"><br></div></div><div style="font-size: 13.3333px">I don't feel able to fix that bug here:</div><div style="font-size: 13.3333px"><br></div><div><b><span style="font-size: 13.3333px">EncoderForSistaV1 >> </span><span style="font-size: 13.3333px;line-height: 20px">instVarReadScanBlockFor: varIndexCode using: scanner</span></b></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">    </span>"Answer a block argument for InstructionStream>>scanFor: that answers true</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">   </span> for reads of the inst var with zero-relative index varIndexCode.</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">       </span> N.B. Don't assume the compiler uses the most compact encoding available."</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><br></b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">   </span>"<span class="Apple-tab-span" style="white-space:pre">      </span>0-15<span class="Apple-tab-span" style="white-space:pre">                </span>0000 i i i i <span class="Apple-tab-span" style="white-space:pre">                               </span>Push Receiver Variable #iiii</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">    </span>*<span class="Apple-tab-span" style="white-space:pre">   </span>224<span class="Apple-tab-span" style="white-space:pre">         </span>11100000<span class="Apple-tab-span" style="white-space:pre">    </span>aaaaaaaa<span class="Apple-tab-span" style="white-space:pre">    </span>Extend A (Ext A = Ext A prev * 256 + Ext A)</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">     </span>*<span class="Apple-tab-span" style="white-space:pre">   </span>226<span class="Apple-tab-span" style="white-space:pre">         </span>11100010<span class="Apple-tab-span" style="white-space:pre">    </span>i i i i i i i i<span class="Apple-tab-span" style="white-space:pre">     </span>Push Receiver Variable #iiiiiiii (+ Extend A * 256)"</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">       </span>| extension |</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">   </span>extension := 0.</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre"> </span>^[:b| | prevext |</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">       </span>   prevext := extension.</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">   </span>   extension := b = 224 ifTrue: [scanner followingByte bitShift: 8] ifFalse: [0].</b></span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">       </span>   (b < 16 and: [b = varIndexCode])</b></span></div><div><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space:pre">     </span>    or: [b = 226</b></span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px"><b><span class="Apple-tab-span" style="white-space: pre;">                 </span>and: [scanner followingByte + prevext = varIndexCode]]]</b></span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px"><br></span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px">Volunteers? :-)</span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px"><br></span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px">Best,</span></div><div style=""><span style="font-size: 13.3333px;line-height: 20px">Marcel</span></div></div>