<div class="gmail_quote">On Wed, Mar 2, 2011 at 9:40 PM, Alexander Gavrilov <span dir="ltr"><<a href="mailto:angavrilov@gmail.com">angavrilov@gmail.com</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">> ;;; Compiling (DEF-UTILITY NEG-SS ...).<br>
><br>
> Condition of type: SIMPLE-ERROR<br>
> Cannot externalize object #<SSE -0.0 0.0 0.0 0.0><br>
> Available restarts:<br>
<br>
</div>That's probably because of the change below. SSE packs can currently<br>
only be compiled as static constants, and this really should be the<br>
way they are handled: that negation operation is really supposed<br>
to compile down to one XORPS instruction.<br></blockquote><div><br></div><div>Static constants can only be used in code that is never unloaded. This is ok for the ECL core library, but not for arbitrary compiled code, which may be garbage collected -- we do not want a couple of statically generated constants to force a library to stay in memory.</div>

<div><br></div><div>I have fixed this but...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">As an alternative, if there is a way to fuse the constant with<br>


the unboxing operation, the unboxed value can probably be represented<br>
as an expression using a couple of C intrinsic functions.<br></blockquote></div><div><br></div><div>... this might be a better solution. ECL currently provides various hooks for inlining functions. One I like quite much is the use of compiler macros. You could replace current sse compilations with compiler macros that inline the constants as C expressions.</div>

<div><br></div><div>Juanjo</div><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>