<br><br><div class="gmail_quote">On Tue, Oct 19, 2010 at 10:55 PM,  <span dir="ltr">&lt;<a href="mailto:squeak-dev-noreply@lists.squeakfoundation.org">squeak-dev-noreply@lists.squeakfoundation.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
Dave Lewis uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://www.squeaksource.com/VMMaker/VMMaker-dtl.194.mcz" target="_blank">http://www.squeaksource.com/VMMaker/VMMaker-dtl.194.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker-dtl.194<br>
Author: dtl<br>
Time: 19 October 2010, 11:52:12 am<br>
UUID: 9dd94fba-0da6-49f7-820c-9af777558bb7<br>
Ancestors: VMMaker-dtl.193<br>
<br>
VMMaker 4.3.8<br>
<br>
Adopt CCodeGenerator improvements from oscog, notably including proper C code generation for ifTrue:ifFalse: constructs  as expressions, as well as methods used in Cog code generation. Produces equivalent C code for the traditional interpreter, modulo some cosmetic differences in the output (line breaks, spaces, etc).<br>

<br>
Notes:<br>
<br>
Added #asExpression to TSendNode&gt;&gt;emitCCodeAsArgumentOn:level:generator:<br>
needed for cpp code generation for expressions.<br>
<br>
Methods #generateInlineCPreprocessorDirective:on:indent: and #generateCppDirective:on:indent: are redundant, get rid of one (or both) of them. Consider using #isDefined:inSmalltalk:comment:ifTrue:ifFalse: instead in Cog.<br>
</blockquote><div><br></div><div>Ooh!   I like it.  Why didn&#39;t I think of this?  Make it so.  The cPreprocessorDirective: was my most egregious hack.  But I would just use</div><div>    #ifDefined: aPreprocessorMacroName ifTrue: [] ifFalse: []</div>
<div>and then use cCode:inSmalltalk: within each arm as appropriate rather than conflating the two.</div><div><br></div><div>best</div><div>Eliot</div></div><br>