<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; "></span></div></blockquote>Hi Gabor,</div><div>&nbsp;&nbsp;Without actually know which instructions you think are unnecessary this is difficult to answer, but i'll see if i can guess which you're interested in</div><div><br><blockquote type="cite"><div><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">9 instructions; 224 bytes at 0x69ca30; 2 locals (0 parameters); 2 temporaries</span></div></blockquote><blockquote type="cite"><div><br>[ &nbsp;&nbsp;0] load<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> lr6, undefined(@k0)<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span><br>[ &nbsp;&nbsp;3] load<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> lr7, undefined(@k0)</div></blockquote><div><br></div>Technically we should be able to determine which of these loads are actually necessary (eg. neither of them), but we currently don't perform any data flow analysis so can't.<blockquote type="cite"><div>[ &nbsp;&nbsp;6] load<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> tr0, undefined(@k0)</div></blockquote></div><div><blockquote type="cite"><div>...</div></blockquote><blockquote type="cite"><div>[ &nbsp;12] mov<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> tr0, lr6</div></blockquote><blockquote type="cite"><div><font class="Apple-style-span" color="#000000">...</font></div></blockquote><blockquote type="cite"><div>[ &nbsp;23] mov<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> tr0, lr7<br>[ &nbsp;26] end<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span> tr0<br></div></blockquote>These repeated moves into tr0 are to handle the implied return value of global (and eval) code. &nbsp;Once again we should be able to remove these, but currently do not perform enough analysis to work that out&nbsp;<blockquote type="cite"><div>These instructions are unnecessary, aren't they?<br>Or is there a technical explanation of them?</div></blockquote><div><br></div><div>Not all of them are necessary, it's just easier for global/eval code to be less efficient at the moment -- with sufficient work we could get rid of the redundant stores, but currently there are other much lower hanging fruit to work on (there are still optimisations that we had added to the ast interpreter that aren't in squirrelfish) :D</div><div><br></div><div>Hope this helps,</div><div>&nbsp;&nbsp;Oliver</div><br><blockquote type="cite"><div>--Gabor<br><br>_______________________________________________<br>webkit-dev mailing list<br><a href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a><br>http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev<br></div></blockquote></div><br></body></html>