<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><div>I gave up e.g. on C/m3cc ABI compatibility.</div><div>It would be nice. But it isn't trivial.</div><div><br></div><div><br></div><div>We could do it, maybe, if we change m3cc.</div><div>i.e. break all/most existing ABIs.</div><div><br></div><div><br></div><div>Thoughts?</div><div><br></div><div><br></div><div>Or maybe we should just remove taking the address</div><div>of nested functions from the language? Problem solved?</div><div><br></div><div><br></div><div>Nested functions w/o address-taken I think are ok, as they'd</div><div>only be called from code compiled with the same backend.</div><div>It is only the escape by address-taken that presents the problem.</div><div><br></div><div><br></div><div>As well, we'd like go quite far if we just didn't use this feature in m3core/libm3.</div><div><br></div><div><br></div><div>Gosh -- if we remove the address-taken from nested functions, a bunch of</div><div>ugliness goes away.. maybe implement them more like C++ lambdas -- require</div><div>caller to know the difference..</div><div><br></div><div><br></div><div> - Jay</div><br><br><div>Date: Thu, 10 Dec 2015 16:54:36 -0800<br>From: rodney.m.bates@acm.org<br>To: m3commit@elegosoft.com<br>Subject: [M3commit] [modula3/cm3] 7b8dd3: Infrastructure for passing static link rightmost (...<br><br><pre> Branch: refs/heads/master<br> Home: <a href="https://github.com/modula3/cm3" target="_blank">https://github.com/modula3/cm3</a><br> Commit: 7b8dd3fc8f5b05d1c69774d92234ea50d143a692<br> <a href="https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692" target="_blank">https://github.com/modula3/cm3/commit/7b8dd3fc8f5b05d1c69774d92234ea50d143a692</a><br> Author: Rodney Bates <rodney.m.bates@acm.org><br> Date: 2015-12-10 (Thu, 10 Dec 2015)<br> <br> Changed paths:<br> M m3-sys/llvm3.6.1/src/M3CG_LLVM.m3<br> <br> Log Message:<br> -----------<br> Infrastructure for passing static link rightmost (currently disabled.)<br> <br>This may be useful in the future, but it did not fix the ABI<br>incompatability between m3llvm and m3cc backends. And<br>putting it first will make life easier for a debugger,<br>probably a lot. Leaving it in but disabled for now, i.e.,<br>static link is currently passed as leftmost parameter, as<br>it has been.<br> <br> <br></pre><br>_______________________________________________
M3commit mailing list
M3commit@elegosoft.com
https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit</div> </div></body>
</html>