<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'><font face="Calibri, sans-serif" size="3">Here is a more heavily commented diff.</font><div style="font-family: Calibri, sans-serif; font-size: 12pt; ">Again, notice that the existing code does a small translation in writing files. My desire is to represent M3CG call sequence more directly. Granted, it might be reasonable, really, to change one or the other -- either make M3CG.T more closely resemble M3CG_Wr, or the other way around -- remove the transform and adjust one backend(s) or other.</div><div style="font-family: Calibri, sans-serif; font-size: 12pt; ">I'd also be putting in more newlines, either to separate every enum element here, or to separate all the newly-commented ones, and put the comment on each one.</div><div style="font-family: Calibri, sans-serif; font-size: 12pt; "><br></div><div><div><font face="Calibri, sans-serif">Index: m3-sys/m3cggen/src/Main.m3</font></div><div><font face="Calibri, sans-serif">===================================================================</font></div><div><font face="Calibri, sans-serif">RCS file: /usr/cvs/cm3/m3-sys/m3cggen/src/Main.m3,v</font></div><div><font face="Calibri, sans-serif">retrieving revision 1.6</font></div><div><font face="Calibri, sans-serif">diff -u -r1.6 Main.m3</font></div><div><font face="Calibri, sans-serif">--- m3-sys/m3cggen/src/Main.m3<span class="Apple-tab-span" style="white-space:pre">      </span>1 Nov 2010 09:59:44 -0000<span class="Apple-tab-span" style="white-space:pre">   </span>1.6</font></div><div><font face="Calibri, sans-serif">+++ m3-sys/m3cggen/src/Main.m3<span class="Apple-tab-span" style="white-space:pre">      </span>11 Oct 2012 06:18:42 -0000</font></div><div><font face="Calibri, sans-serif">@@ -9,7 +9,7 @@</font></div><div><font face="Calibri, sans-serif">   Desc = RECORD name: TEXT;  op: Op;  END;</font></div><div><font face="Calibri, sans-serif"> </font></div><div><font face="Calibri, sans-serif"> CONST</font></div><div><font face="Calibri, sans-serif">-  Map = ARRAY Op OF Desc {</font></div><div><font face="Calibri, sans-serif">+  Map = ARRAY [Op.begin_unit..Op.fetch_and_xor] OF Desc {</font></div><div><font face="Calibri, sans-serif">     Desc { "begin_unit", Op.begin_unit }, </font></div><div><font face="Calibri, sans-serif">     Desc { "end_unit", Op.end_unit }, </font></div><div><font face="Calibri, sans-serif">     Desc { "import_unit", Op.import_unit }, </font></div><div><font face="Calibri, sans-serif">Index: m3-sys/m3middle/src/M3CG_BinRd.m3</font></div><div><font face="Calibri, sans-serif">===================================================================</font></div><div><font face="Calibri, sans-serif">RCS file: /usr/cvs/cm3/m3-sys/m3middle/src/M3CG_BinRd.m3,v</font></div><div><font face="Calibri, sans-serif">retrieving revision 1.19</font></div><div><font face="Calibri, sans-serif">diff -u -r1.19 M3CG_BinRd.m3</font></div><div><font face="Calibri, sans-serif">--- m3-sys/m3middle/src/M3CG_BinRd.m3<span class="Apple-tab-span" style="white-space:pre">  </span>4 Sep 2012 14:29:54 -0000<span class="Apple-tab-span" style="white-space:pre">   </span>1.19</font></div><div><font face="Calibri, sans-serif">+++ m3-sys/m3middle/src/M3CG_BinRd.m3<span class="Apple-tab-span" style="white-space:pre">      </span>11 Oct 2012 06:18:42 -0000</font></div><div><font face="Calibri, sans-serif">@@ -37,7 +37,7 @@</font></div><div><font face="Calibri, sans-serif">   END;</font></div><div><font face="Calibri, sans-serif"> </font></div><div><font face="Calibri, sans-serif"> CONST</font></div><div><font face="Calibri, sans-serif">-  CmdMap = ARRAY Bop OF Cmd {</font></div><div><font face="Calibri, sans-serif">+  CmdMap = ARRAY [Bop.begin_unit..Bop.fetch_and_xor] OF Cmd {</font></div><div><font face="Calibri, sans-serif">     Cmd {Bop.begin_unit, begin_unit},</font></div><div><font face="Calibri, sans-serif">     Cmd {Bop.end_unit, end_unit},</font></div><div><font face="Calibri, sans-serif">     Cmd {Bop.import_unit, import_unit},</font></div><div><font face="Calibri, sans-serif">Index: m3-sys/m3middle/src/M3CG_Binary.i3</font></div><div><font face="Calibri, sans-serif">===================================================================</font></div><div><font face="Calibri, sans-serif">RCS file: /usr/cvs/cm3/m3-sys/m3middle/src/M3CG_Binary.i3,v</font></div><div><font face="Calibri, sans-serif">retrieving revision 1.6</font></div><div><font face="Calibri, sans-serif">diff -u -r1.6 M3CG_Binary.i3</font></div><div><font face="Calibri, sans-serif">--- m3-sys/m3middle/src/M3CG_Binary.i3<span class="Apple-tab-span" style="white-space:pre"> </span>1 Nov 2010 09:59:44 -0000<span class="Apple-tab-span" style="white-space:pre">   </span>1.6</font></div><div><font face="Calibri, sans-serif">+++ m3-sys/m3middle/src/M3CG_Binary.i3<span class="Apple-tab-span" style="white-space:pre">      </span>11 Oct 2012 06:18:42 -0000</font></div><div><font face="Calibri, sans-serif">@@ -21,14 +21,19 @@</font></div><div><font face="Calibri, sans-serif">     end_init, init_int, init_proc, init_label, init_var, init_offset,</font></div><div><font face="Calibri, sans-serif">     init_chars, init_float, import_procedure, declare_procedure,</font></div><div><font face="Calibri, sans-serif">     begin_procedure, end_procedure, begin_block, end_block,</font></div><div><font face="Calibri, sans-serif">-    note_procedure_origin, set_label, jump, if_true, if_false, if_eq,</font></div><div><font face="Calibri, sans-serif">-    if_ne, if_gt, if_ge, if_lt, if_le, case_jump, exit_proc, load,</font></div><div><font face="Calibri, sans-serif">+    note_procedure_origin, set_label, jump, if_true, if_false,</font></div><div><font face="Calibri, sans-serif">+    if_eq, if_ne, if_gt, if_ge, if_lt, if_le,       (* file only; in-memory uses if_compare *)</font></div><div><font face="Calibri, sans-serif">+    case_jump, exit_proc, load,</font></div><div><font face="Calibri, sans-serif">     load_address, load_indirect, store, store_indirect,</font></div><div><font face="Calibri, sans-serif">-    load_nil, load_integer, load_float, eq, ne,</font></div><div><font face="Calibri, sans-serif">-    gt, ge, lt, le, add, subtract, multiply, divide, negate, abs, max,</font></div><div><font face="Calibri, sans-serif">-    min, round, trunc, floor, ceiling, cvt_float, div, mod, set_union,</font></div><div><font face="Calibri, sans-serif">+    load_nil, load_integer, load_float,</font></div><div><font face="Calibri, sans-serif">+    eq, ne, gt, ge, lt,  le,                        (* file only; in-memory uses compare *)</font></div><div><font face="Calibri, sans-serif">+    add, subtract, multiply, divide, negate, abs, max,</font></div><div><font face="Calibri, sans-serif">+    min,</font></div><div><font face="Calibri, sans-serif">+    round, trunc, floor, ceiling,                   (* file only; in-memory uses cvt_int *)</font></div><div><font face="Calibri, sans-serif">+    cvt_float, div, mod, set_union,</font></div><div><font face="Calibri, sans-serif">     set_difference, set_intersection, set_sym_difference, set_member,</font></div><div><font face="Calibri, sans-serif">-    set_eq, set_ne, set_lt, set_le, set_gt, set_ge, set_range,</font></div><div><font face="Calibri, sans-serif">+    set_eq, set_ne, set_lt, set_le, set_gt, set_ge, (* file only; in-memory uses set_compare *)</font></div><div><font face="Calibri, sans-serif">+    set_range,</font></div><div><font face="Calibri, sans-serif">     set_singleton, not, and, or, xor, shift, shift_left, shift_right,</font></div><div><font face="Calibri, sans-serif">     rotate, rotate_left, rotate_right, widen, chop, extract, extract_n,</font></div><div><font face="Calibri, sans-serif">     extract_mn, insert, insert_n, insert_mn, swap, pop, copy_n, copy,</font></div><div><font face="Calibri, sans-serif">@@ -38,7 +43,17 @@</font></div><div><font face="Calibri, sans-serif">     call_indirect, pop_param, pop_struct, pop_static_link,</font></div><div><font face="Calibri, sans-serif">     load_procedure, load_static_link, comment,</font></div><div><font face="Calibri, sans-serif">     store_ordered, load_ordered, exchange, compare_exchange, fence,</font></div><div><font face="Calibri, sans-serif">-    fetch_and_add, fetch_and_sub, fetch_and_or, fetch_and_and, fetch_and_xor</font></div><div><font face="Calibri, sans-serif">+    fetch_and_add,      (* file only; in-memory uses fetch_and_op *)</font></div><div><font face="Calibri, sans-serif">+    fetch_and_sub,      (* file only; in-memory uses fetch_and_op *)</font></div><div><font face="Calibri, sans-serif">+    fetch_and_or,       (* file only; in-memory uses fetch_and_op *)</font></div><div><font face="Calibri, sans-serif">+    fetch_and_and,      (* file only; in-memory uses fetch_and_op *)</font></div><div><font face="Calibri, sans-serif">+    fetch_and_xor,      (* file only; in-memory uses fetch_and_op *)</font></div><div><font face="Calibri, sans-serif">+    set_error_handler,  (* in-memory only; contains a pointer, so silently skipped in files *)</font></div><div><font face="Calibri, sans-serif">+    compare,            (* in-memory only; file converts to eq/ne/etc. *)</font></div><div><font face="Calibri, sans-serif">+    cvt_int,            (* in-memory only; file converts to trunc/ceiling/etc. *)</font></div><div><font face="Calibri, sans-serif">+    fetch_and_op,       (* in-memory only; file converts to fetch_and_add/fetch_and_sub/etc. *)</font></div><div><font face="Calibri, sans-serif">+    if_compare,         (* in-memory only; file converts to if_eq/if_ne/etc. *)</font></div><div><font face="Calibri, sans-serif">+    set_compare         (* in-memory only; file converts to set_eq/set_ne/etc. *)</font></div><div><font face="Calibri, sans-serif">   };</font></div><div><font face="Calibri, sans-serif"> </font></div><div><font face="Calibri, sans-serif"> (* Integers are encoded as sequences of unsigned bytes, [0..255].</font></div><div><br></div></div><div style="font-family: Calibri, sans-serif; font-size: 12pt; "><br></div><div style="font-family: Calibri, sans-serif; font-size: 12pt; "> - Jay</div><div style="font-family: Calibri, sans-serif; font-size: 12pt; "><br><br><div><div id="SkyDrivePlaceholder"></div><hr id="stopSpelling">From: jay.krell@cornell.edu<br>To: hosking@cs.purdue.edu<br>Date: Thu, 11 Oct 2012 05:46:07 +0000<br>CC: m3devel@elegosoft.com<br>Subject: Re: [M3devel] completing M3CG_Binary.Op?<br><br>

<style><!--
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:12pt;font-family:Calibri;}

--></style>
<div dir="ltr">Tony, I think you might not understand, or have it backwards.<div><br></div><div><br></div><div>In my code I do use <span style="font-family:Calibri">cvt_int</span>.</div><div>It is the existing M3CG_Wr and M3CG_BinWr that don't.</div><div>It seems like a pretty pointless transformation there, and I'd rather</div><div>not make it in my code.</div><div>The comments in the change describe what we already currently do for "files", that I do not want to do for in-memory.</div><div><br></div><div><br></div><div>For example, M3CG_Wr.m3:</div><div><br></div><div><div>PROCEDURE set_compare  (u: U;  s: ByteSize;  op: CompareOp;  t: IType) =</div><div>  (* s1.t := (s1.B  op  s0.B)  ; pop *)</div><div>  CONST OpName = ARRAY CompareOp OF TEXT {</div><div>                   "set_eq", "set_ne", "set_gt", "set_ge", "set_lt", "set_le" };</div><div>  BEGIN</div><div>    Cmd   (u, OpName [op]);</div><div>    Int   (u, s);</div><div>    TName (u, t);</div><div>    NL    (u);</div><div>  END set_compare;</div></div><div><br></div><div><br></div><div>but in my M3CG_MultiPass.m3 (not necessarily the commited version!)</div><div><br></div><div><div>PROCEDURE set_compare(self: T; byte_size: ByteSize; op: CompareOp; type: IType) =</div><div>BEGIN</div><div>self.Add(NEW(set_compare_t, op := Op.set_compare, byte_size := byte_size, compare_op := op, type := type));</div><div>END set_compare;</div></div><div><br></div><div><br></div><div>so -- ok with my change?</div><div><br></div><div>Thank you,</div><div> - Jay<br><br><br><div><div id="ecxSkyDrivePlaceholder"></div><hr id="ecxstopSpelling">From: jay.krell@cornell.edu<br>Date: Wed, 10 Oct 2012 20:08:41 -0700<br>To: hosking@cs.purdue.edu<br>CC: m3devel@elegosoft.com; jay.krell@cornell.edu<br>Subject: Re: [M3devel] completing M3CG_Binary.Op?<br><br><div>I agree I could do the transforms that M3CG_Wr does but I'd rather leave things untranformed. You understand? It is the existing code that changes to "different" "instructions" instead of channeling the interface a bit more directly. I want a more direct form.<br><br> - Jay (briefly/pocket-sized-computer-aka-phone)</div><div><br>On Oct 10, 2012, at 5:18 PM, Antony Hosking <<a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a>> wrote:<br><br></div><div></div><blockquote><div>Why not simply capture the state of the existing ops?  e.g,, cvt_int.<br>
<br><div><div>On Oct 10, 2012, at 7:33 PM, Jay K <<a href="mailto:jay.krell@cornell.edu"></a><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"><br>Look at M3CG_MultiPass.<br><br>For each function, it creates a record to hold the parameters.<br>    So they can be later be looped over in a different order and/or multiple times.<br>The record includes an enum.<br>I need an enum that looks almost exactly like M3CG_Binary.Op,<br>except that I need those few missing elements.<br> <br> M3CG_MultiPass already has most of this, except<span class="ecxApple-converted-space"> </span><br>   1) I somehow forgot got to handle a bunch of them <span class="ecxApple-converted-space"> </span><br>   2) I need the below diff for it to be complete, or some other nearly identical enum instead. <span class="ecxApple-converted-space"> </span><br> <br> - Jay<br> <br><div><div id="ecxSkyDrivePlaceholder"></div><hr id="ecxstopSpelling">Subject: Re: [M3devel] completing M3CG_Binary.Op?<br>From: <a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br>Date: Wed, 10 Oct 2012 12:13:51 -0400<br>CC: <a href="mailto:m3devel@elegosoft.com"></a><a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br>To: <a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br><br>I still don’t understand why the change is needed.<br><br><div><div>On Oct 10, 2012, at 11:53 AM, Jay K <<a href="mailto:jay.krell@cornell.edu"></a><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-style:normal;font-variant:normal;font-weight:normal;font-size:12pt;line-height:normal;font-family:Calibri;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2"><div dir="ltr">M3CG.T, M3CG_Ops.T also same thing, I use them interchangably in email and checkin comments. My code is more careful.<div><br><div> - Jay<div><br><div><div id="ecxSkyDrivePlaceholder"></div><hr id="ecxstopSpelling">From:<span class="ecxApple-converted-space"> </span><a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br>Date: Wed, 10 Oct 2012 02:33:13 -0400<br>To:<span class="ecxApple-converted-space"> </span><a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br>CC:<span class="ecxApple-converted-space"> </span><a href="mailto:m3devel@elegosoft.com"></a><a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br>Subject: Re: [M3devel] completing M3CG_Binary.Op?<br><br><div>Hmm.  But the M3CG calls don’t include those operations.  e.g., cvt_int is defined in M3CG_Ops.  Why wouldn’t you just have a record for that?</div><br>On Oct 10, 2012, at 1:59 AM, Jay <<a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:<br><div><br class="ecxApple-interchange-newline"><blockquote><div>I have an array of records, one per M3CG.T call. See M3CG_MultiPass -- which I guess is where I'd put the enum, if I can't reuse the existing one.<br><br> - Jay (briefly/pocket-sized-computer-aka-phone)</div><div><br>On Oct 9, 2012, at 10:35 PM, Antony Hosking <<a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a>> wrote:<br><br></div><div></div><blockquote>Why?<div><br><div><div>On Oct 10, 2012, at 12:52 AM, Jay <<a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a>> wrote:</div><br class="ecxApple-interchange-newline"><blockquote><div>I need an enumeration with a member per M3CG.T method. M3CG_Binary.Op is very nearly it.</div><div><br><br> - Jay (briefly/pocket-sized-computer-aka-phone)</div><div><br>On Oct 9, 2012, at 9:36 PM, Antony Hosking <<a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu"></a><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a>> wrote:<br><br></div><div></div><blockquote>Forgive me, but I don’t understand the purpose of this change.<br><br><div><div>On Oct 10, 2012, at 12:08 AM, Jay K <<a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu"></a><a href="mailto:jay.krell@cornell.edu"></a><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-style:normal;font-variant:normal;font-weight:normal;font-size:12pt;line-height:normal;font-family:Calibri;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2"><div dir="ltr"><div><font face="Calibri, sans-serif">M3CG_Binary.Op currently represents</font></div><div><font face="Calibri, sans-serif">what we write to ".mc" files for the gcc</font></div><div><font face="Calibri, sans-serif">backend to read in. This is very very close</font></div><div><font face="Calibri, sans-serif">to what you'd want to fully represent M3CG.T.</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">It missing an operation that takes a function pointer -- can't</font></div><div><font face="Calibri, sans-serif">be stored in a file. It is missing operations that get converted</font></div><div><font face="Calibri, sans-serif">to different operations by M3CG_Wr. There is no real</font></div><div><font face="Calibri, sans-serif">value in the transform but it doesn't hurt either.</font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">I'd like to add the missing operations.</font></div><div><font face="Calibri, sans-serif">It seems like a very sensible reasonable change to me.</font></div><div><br></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif"><br></font></div><div><font face="Calibri, sans-serif">===================================================================</font></div><div><font face="Calibri, sans-serif">RCS file: /usr/cvs/cm3/m3-sys/m3middle/src/M3CG_BinRd.m3,v</font></div><div><font face="Calibri, sans-serif">retrieving revision 1.19</font></div><div><font face="Calibri, sans-serif">diff -u -r1.19 M3CG_BinRd.m3</font></div><div><font face="Calibri, sans-serif">--- M3CG_BinRd.m3<span class="ecxApple-tab-span" style="white-space:pre">        </span>4 Sep 2012 14:29:54 -0000<span class="ecxApple-tab-span" style="white-space:pre">        </span>1.19</font></div><div><font face="Calibri, sans-serif">+++ M3CG_BinRd.m3<span class="ecxApple-tab-span" style="white-space:pre">       </span>10 Oct 2012 04:04:19 -0000</font></div><div><font face="Calibri, sans-serif">@@ -37,7 +37,7 @@</font></div><div><font face="Calibri, sans-serif">   END;</font></div><div><font face="Calibri, sans-serif"> </font></div><div><font face="Calibri, sans-serif"> CONST</font></div><div><font face="Calibri, sans-serif">-  CmdMap = ARRAY Bop OF Cmd {</font></div><div><font face="Calibri, sans-serif">+  CmdMap = ARRAY [Bop.begin_unit..Bop.fetch_and_xor] OF Cmd {</font></div><div><font face="Calibri, sans-serif">     Cmd {Bop.begin_unit, begin_unit},</font></div><div><font face="Calibri, sans-serif">     Cmd {Bop.end_unit, end_unit},</font></div><div><font face="Calibri, sans-serif">     Cmd {Bop.import_unit, import_unit},</font></div><div><font face="Calibri, sans-serif">Index: M3CG_Binary.i3</font></div><div><font face="Calibri, sans-serif">===================================================================</font></div><div><font face="Calibri, sans-serif">RCS file: /usr/cvs/cm3/m3-sys/m3middle/src/M3CG_Binary.i3,v</font></div><div><font face="Calibri, sans-serif">retrieving revision 1.6</font></div><div><font face="Calibri, sans-serif">diff -u -r1.6 M3CG_Binary.i3</font></div><div><font face="Calibri, sans-serif">--- M3CG_Binary.i3<span class="ecxApple-tab-span" style="white-space:pre">      </span>1 Nov 2010 09:59:44 -0000<span class="ecxApple-tab-span" style="white-space:pre">        </span>1.6</font></div><div><font face="Calibri, sans-serif">+++ M3CG_Binary.i3<span class="ecxApple-tab-span" style="white-space:pre">       </span>10 Oct 2012 04:04:19 -0000</font></div><div><font face="Calibri, sans-serif">@@ -38,7 +38,17 @@</font></div><div><font face="Calibri, sans-serif">     call_indirect, pop_param, pop_struct, pop_static_link,</font></div><div><font face="Calibri, sans-serif">     load_procedure, load_static_link, comment,</font></div><div><font face="Calibri, sans-serif">     store_ordered, load_ordered, exchange, compare_exchange, fence,</font></div><div><font face="Calibri, sans-serif">-    fetch_and_add, fetch_and_sub, fetch_and_or, fetch_and_and, fetch_and_xor</font></div><div><font face="Calibri, sans-serif">+    fetch_and_add, fetch_and_sub, fetch_and_or, fetch_and_and, fetch_and_xor,</font></div><div><font face="Calibri, sans-serif">+</font></div><div><font face="Calibri, sans-serif">+    (* These only occur in memory, not in files.</font></div><div><font face="Calibri, sans-serif">+       Conversely, what they are converted to only occur in files,</font></div><div><font face="Calibri, sans-serif">+       not in memory. *)</font></div><div><font face="Calibri, sans-serif">+    set_error_handler,  (* disk: contains a pointer, silently skipped *)</font></div><div><font face="Calibri, sans-serif">+    compare             (* converted to eq/ne/etc. *)</font></div><div><font face="Calibri, sans-serif">+    cvt_int,            (* converted to trunc/ceiling/etc. *)</font></div><div><font face="Calibri, sans-serif">+    fetch_and_op,       (* converted to fetch_and_add/fetch_and_sub/etc. *)</font></div><div><font face="Calibri, sans-serif">+    if_compare,         (* converted to if_eq/if_ne/etc. *)</font></div><div><font face="Calibri, sans-serif">+    set_compare,        (* converted to set_eq/set_ne/etc. *)</font></div><div><font face="Calibri, sans-serif">   };</font></div></div></div></blockquote></div></blockquote></blockquote></div></div></blockquote></blockquote></div></div></div></div></div></div></div></blockquote></div></div></div></div></blockquote></div><br></div></blockquote></div></div>                                           </div></div></div>                                    </div></body>
</html>