<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>

<META name=Generator content="Microsoft SafeHTML">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 href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</A> wrote:</DIV><BR class=ecxApple-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>                                           </body>
</html>