<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'>Eh, these finally procedures cause other problems..I have code to alloca a jmpbuf per try in a procedure..and it is broken by finally generating procedures in a custom way..<br><br>so I have to move shared code to something called...ProcedureOrFinallyProcedure?<div>that otherwise was just in Procedure.</div><div><br></div><div> - Jay<br><br><br><div><hr id="stopSpelling">From: jay.krell@cornell.edu<br>To: rodney.m.bates@acm.org; m3commit@elegosoft.com<br>Subject: RE: [M3commit] [modula3/cm3] 496e9b: Fix compiler-generated FINALLY procedure using par...<br>Date: Sun, 2 Aug 2015 02:20:51 +0000<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}

--></style>
<div dir="ltr"><div><span style="font-size:12pt;">Rodney, Do you have a test case that was broken before and fixed afterward?</span></div><div><br></div><div>If possible, though not required, check something into m3-sys/m3tests?</div><div><br></div><div>I don't mean to imply the code was correct before. I don't know, at all.</div><div><br></div><div>Thank you,</div><div> - Jay<br><br><br><br><div>Date: Sat, 1 Aug 2015 17:36:54 -0700<br>From: rodney.m.bates@acm.org<br>To: m3commit@elegosoft.com<br>Subject: [M3commit] [modula3/cm3] 496e9b: Fix compiler-generated FINALLY procedure using par...<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: 496e9be1dcdcf87bda8e72239fc90132591b4cf4<br>      <a href="https://github.com/modula3/cm3/commit/496e9be1dcdcf87bda8e72239fc90132591b4cf4" target="_blank">https://github.com/modula3/cm3/commit/496e9be1dcdcf87bda8e72239fc90132591b4cf4</a><br>  Author: Rodney Bates <rodney.m.bates@acm.org><br>  Date:   2015-08-01 (Sat, 01 Aug 2015)<br> <br>  Changed paths:<br>    M m3-sys/m3front/src/misc/CG.m3<br> <br>  Log Message:<br>  -----------<br>  Fix compiler-generated FINALLY procedure using parent procedure's temporary.<br> <br> Changes to be committed:<br> <br>     modified:   m3-sys/m3front/src/misc/CG.m3<br> <br>CG was not stacking global variables used for keeping track of temporaries<br>when entering nested procedures.  In the case of a compiler-generated<br>nested procedure for the finally part of a TRY--FINALLY block, this<br>meant the finally code could use a temporary allocated by the parent,<br>though not in use at the time.  This violated the comment in M3CG_Ops.i3:<br> <br>    declare_temp (s: ByteSize;  a: Alignment;  t: Type;<br>            in_memory: BOOLEAN): Var;<br>    (* declares an anonymous local variable.  Temps are declared<br>       and freed between their containing procedure's begin_procedure and<br>       end_procedure calls.  Temps are never referenced by nested procedures. *)<br> <br>In cases of nested procedures explicitly declared in source code, this<br>didn't matter because they are located ahead of any of the parent<br>procedure's executable code, when it has no allocated temps, and they<br>free their own temps at their end, restoring the previous state.<br> <br> <br></pre><br>_______________________________________________
M3commit mailing list
M3commit@elegosoft.com
https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3commit</div></div>                                      </div></div></div>                                    </div></body>
</html>