<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hi all:<br>is useful to say here that the compiler linker approach at some extent was done in the same way as was in Modula-3, now Open Watcom, used same runtime structure and required as far as I know no better enlightment in the original versions of it, I read it some quite time ago in its sources, hard to tell you where it was, but if OpenWatcom sold it as a Windows solution in its runtime why not in the Modula-3 one, indeed how it would be to port its linker to work for Modula-3 and tune it for the  required  works of it. Is better to adapt to a better portable (Linux, etc) solution than  to adapt to a  non-portable still solution as I believe.<br>Thanks in advance<br><br>--- El <b>jue, 10/2/11, Jay K <i><jay.krell@cornell.edu></i></b> escribió:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px;
 padding-left: 5px;"><br>De: Jay K <jay.krell@cornell.edu><br>Asunto: Re: [M3devel] threading on Windows?<br>Para: "Tony" <hosking@cs.purdue.edu><br>CC: "m3devel" <m3devel@elegosoft.com><br>Fecha: jueves, 10 de febrero, 2011 17:11<br><br><div id="yiv295862095">

<style><!--
#yiv295862095 .yiv295862095hmmessage P
{
margin:0px;padding:0px;}
#yiv295862095 .yiv295862095hmmessage
{
font-size:10pt;font-family:Tahoma;}
--></style>
Why is it better?  Because rebinding to a different function is just a matter of changing an INTERFACE in the libraries, rather than hacking the compiler.<br><br>
<div>
<div>On Feb 10, 2011, at 6:01 AM, <a rel="nofollow" ymailto="mailto:jay.krell@cornell.edu" target="_blank" href="/mc/compose?to=jay.krell@cornell.edu">jay.krell@cornell.edu</a> wrote:</div><br class="yiv295862095ecxApple-interchange-newline">
<blockquote>
<div>
<div>1. I never understood why this any better.<br>2. It how things are currently.</div>
<div>3. Why not m3cg.alloca? (but see #2)</div>
<div><br> - Jay/iPad</div>
<div><br> </div>
<div>You really think there's a way to do this w/o a special case in the compiler? I highly doubt that.</div>
<div>Granted, I haven't looked at it and I will spend a few minutes doing so, but again, I highly doubt this can be anything but a very special case.</div>
<div>Maybe runtime hooks allow for an enum comparison instead of a string comparison.</div>
<div>m3cg.alloca allows the most direct route w/o discovering the special case in a general purpose path.</div>
<div> </div>
<div> </div>
<div>Inlining...well, on NT, the stack pages must be touched in order.</div>
<div>Code that does merely: void f() { char foo[4097]; } incurs a function calls in the prolog.</div>
<div>The function called is _chkstk.</div>
<div>It is a long standing bug in the NT/x86 backend that it doesn't do this.</div>
<div>Given that jmpbuf is always way smaller than 4K, doing merely sub esp,Jmpbuf__size is probably reasonable.</div>
<div>As well, oh...well, that's not m3cg.Alloca, that's reall m3cg.AllocaJmpbufSize...which is specific enough,</div>
<div>that if the backend wants to know the target jmpbuf size, it can optimize slightly thereof.</div>
<div>We could make it be m3cg.AllocaSmallValue(name: TEXT).</div>
<div>I'm torn. Many many many almost identical options.</div>
<div> </div>
<div> </div>
<div>As well, Target.i3 could contain a jumpbuf size, default it to 0. If it is zero, use the code I have now.</div>
<div>If it isn't zero, use the old code. Something like that.</div>
<div>Yes, I realize there are changes in the EH code possibly implied.</div>
<div> </div>
<div> </div>
<div>Again, _chkstk has a highly custom calling convention, both its input parameter and output don't follow convention.</div>
<div>RTHooks makes that not a special case? I'll look later..</div>
<div> </div>
<div> </div>
<div>- Jay</div></div></blockquote></div>                                           
</div></blockquote></td></tr></table><br>