<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
so.."the literate" (actually posts to usenet<br>by people who worked on Modula-3 compilers!)<br>warns about the following sort of thing:<br><br>void F1(char* a, char* b)<br>{<br> int c;<br> for (c = 10; c < 20; ++c)<br> {<br> a[c] = b[c];<br> }<br>}<br><br>getting transformed into something like:<br><br>void F1(char* a, char* b)<br>{<br> int c;<br> a += 10;<br> b += 10;<br> for (c = 0; c < 10; ++c)<br> {<br> a[c] = a[c];<br> }<br>}<br><br><br>actually it warns about something trickier, but this<br>is the best I can come up with that I understand,<br>off the top of my head.<br><br><br> => "interior pointers"<br> => "no gc roots in registers or on stack"<br> <br> <br>Should we be concerned?<br>Does our GC handle this?<br><br><br>Should we, like, mark all stores volatile but not all loads?<br>And maybe all parameters???<br> And maybe copy them into non-volatile locals?<br> <br>The trickier warning is something where<br>the difference of the array bases is what is in registers, not merely an interior pointer.<br>I searched a while but couldn't find it.<br>It is probably by David Chase.<br><br> - Jay<br><br><br><br><br><br> </body>
</html>