<br><br><div class="gmail_quote">On Mon, Apr 5, 2010 at 10:37 AM, Andreas Raab <span dir="ltr"><<a href="mailto:andreas.raab@gmx.de">andreas.raab@gmx.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On 4/5/2010 4:04 AM, Levente Uzonyi wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It's a decompiler bug. Eliot has fixes for these issues but I don't know<br>
if he has time to add them to the Trunk.<br>
</blockquote>
<br></div>
I just spoke with Eliot and it seems unlikely that he'll have much time to work on this. Also, there are cases that the decompiler handles correctly, but differently from the compiler.<br>
<br>
Eliot's recommendation to extent DecompilerTests>>decompilerFailures with the failing sites.<br></blockquote><div><br></div><div>Some saintly person should go through the failures and add to decompilerFailures all those that fail because of known limitations in the decompiler. These limitations are things like</div>
<div><br></div><div>Floating point reader precision, e.g. the source specifies more precision than is supported and so the compilation of the decompilation is slightly different.</div><div><br></div><div>Unreachable statements. e.g. foo ifTrue: [^bar] ifFalse: [^baz]. ^huh? decompiles as foo ifTrue: [^bar] ifFalse: [^baz]. and so ^'huh?' is missing.</div>
<div><br></div><div>Null statements. e.g. foo ifTrue: []. decompiles as foo. which, if foo is an inst var, compiles as empty.</div><div><br></div><div>These are limitations in the decompiler we simply have to tolerate. decompilerFailures is a list that documents the reasons for failure.</div>
<div><br></div><div>Of course another, also valid, approach is to fix the code in the failures so that they don't contain unreachable or null statements.</div><div><br></div><div>HTH</div><div>Eliot</div><div><br></div>
<div><br></div><div> </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Cheers,<br><font color="#888888">
- Andreas<br>
<br>
</font></blockquote></div><br>