<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'>I'm targeting ANSI C. Maybe with a K&R option. (K&R has been useful surprisingly recently -- the bundled HPUX/HPPA compiler is K&R, it is there just to recompile "data" and relink the kernel; and on my Irix install I happened upon a bundled compiler that I recall might have been K&R).<br><br><br>And then later an option for C++, specifically for exception handling.<br>And an option to use __try/__except/__finally on NT, and maybe similar in other systems if I can test them (VMS, Tru64, Ultrix, but really, setjmp for non-mainstream platforms is fine, esp. given a C++ option).<br>And maybe C++ to optimize static chain handling.<br><br><br>Hopefully nothing else will be particularly compiler specific.<br><br><br>But for now I'm just testing with whatever is in my Mac.<br><br><br> - Jay<br><br><br><div><div id="SkyDrivePlaceholder"></div><hr id="stopSpelling">Subject: Re: [M3devel] friendly reminder/request for cooperative suspend<br>From: dragisha@m3w.org<br>Date: Sun, 16 Sep 2012 11:00:51 +0200<br>CC: jay.krell@cornell.edu; m3devel@elegosoft.com<br>To: hosking@cs.purdue.edu<br><br>Can we have clang as a reference compiler, one we target with our C++ backend?<div><br></div><div><div>
<span class="ecxApple-style-span" style="border-collapse:separate;color:rgb(0, 0, 0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-size:medium"><span class="ecxApple-style-span" style="border-collapse:separate;color:rgb(0, 0, 0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;font-size:medium"><div style="word-wrap:break-word"><div>--</div><div>Divided by a common language</div><div><br></div><div>Dragiša Durić</div><div><a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a></div><div><br></div></div></span><br class="ecxApple-interchange-newline"></span><br class="ecxApple-interchange-newline">
</div>
<br><div><div>On Sep 14, 2012, at 5:10 PM, Antony Hosking wrote:</div><br class="ecxApple-interchange-newline"><blockquote><div style="word-wrap:break-word">Yes, this is on the top of my list of things to do.<div>Plus fix some atomics bugs.</div><div>atomics plus cooperative suspend gives us a much better story on locks too.</div><div>We could even have a proper memory model like C++11.</div><div><br></div><div>LLVM would also be great (better even than the C backend) because we'd get some decent optimization passes.</div><div><br></div><div>
<br><div><div>On Sep 14, 2012, at 4:01 AM, Jay K <<a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:</div><br class="ecxApple-interchange-newline"><blockquote><div class="ecxhmmessage" style="font-size:12pt;font-family:Calibri;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px"><div dir="ltr">friendly reminder/request: I'd like to see the system changed to use cooperative suspend.<div><br></div><div><br></div><div>Combined with a C backend, that would greatly expand portability and remove existing target-dependent code (i.e. already ported) from the system.</div><div><br></div><div><br></div><div>I'm not confident that GetThreadContext works on "wow64".</div><div>It'd fix that.</div><div><br></div><div><br></div><div>We can compute the top/bottom of the stack fairly portably -- address of locals.</div><div>We can capture current context/registers via setjmp.</div></div></div></blockquote><blockquote><div class="ecxhmmessage" style="font-size:12pt;font-family:Calibri;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px"><div dir="ltr"><div>Or maybe getcontext.</div><div>(We should find out about setjmp/longjmp munging -- what gets munged? Everything? Just non-gc-roots? Only after longjmp?)</div><div>Itanium is special -- there is a second stack growing up from the same base.</div><div><br></div><div><br></div><div>I'd like this way more than LLVM.</div></div></div></blockquote><blockquote><div class="ecxhmmessage" style="font-size:12pt;font-family:Calibri;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px"><div dir="ltr"><div><br></div><div><br></div><div>Maybe I can work on. Maybe.</div><div><br></div><div><br></div><div>I believe typical production Java VMs use cooperative suspend.</div><div><br></div><div><br></div><div> - Jay</div></div></div></blockquote></div><br></div></div></blockquote></div><br></div></div>                                       </div></body>
</html>