<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Yes, someone can pass the function as a parameter.</div><div><br></div><div>I don't understand the rest of what you are saying.</div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" color="#0000FF"><font class="Apple-style-span" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Antony Hosking</span></span></font></font><font class="Apple-style-span" face="Gill Sans"><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space"> </span></span></span><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; ">Associate Professor</span></span><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; "> | Computer Science | Purdue University</span></span></font></div><div><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; ">305 N. University Street | West Lafayette | IN 47907 | USA</span></font></div><div><font class="Apple-style-span" color="#0000FF" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Office</span></span></font><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-style-span" style="font-family: GillSans-Light; "> +1 765 494 6001 |<span class="Apple-converted-space"> </span></span></span></font><font class="Apple-style-span" color="#0000FF" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Mobile</span></span></font><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-converted-space"> </span>+1 765 427 5484</span></span></font></div><div><font class="Apple-style-span" face="GillSans-Light"><br class="khtml-block-placeholder"></font></div></span></span></span></span></span></span></span><br class="Apple-interchange-newline"></span></div></span></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On 10 Mar 2010, at 17:27, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><br>Hey, should we maybe have a flag that indicates we are producing a function that is meant to provide and only provide exactly the functionality of the "one" m3cg call?<br>You know, that'd be a great hint to:<br><br>  - definitely definitely definitely definitely inline<br>  - if we know this thing existed, we could use it instead of a .c file.<br>    - along with the function's name for the invocations that aren't the function?<br><br><br>Why provide the function anyway? In case someone takes the address?<br><br><br><br> - Jay<br><br><br>________________________________<br><blockquote type="cite">From: <a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br></blockquote><blockquote type="cite">To: <a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br></blockquote><blockquote type="cite">Date: Mon, 8 Mar 2010 16:04:45 +0000<br></blockquote><blockquote type="cite">CC: <a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br></blockquote><blockquote type="cite">Subject: Re: [M3commit] CVS Update: cm3<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Fair enough.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">- Jay<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">________________________________<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">From: <a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br></blockquote><blockquote type="cite">Date: Mon, 8 Mar 2010 10:29:00 -0500<br></blockquote><blockquote type="cite">To: <a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br></blockquote><blockquote type="cite">CC: <a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br></blockquote><blockquote type="cite">Subject: Re: [M3commit] CVS Update: cm3<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">You can't call the support function Long__Extract because we already have a Long__Extract in m3core/src/word. It is the library representative of the front-end compiler-generated (inlined) Long.Extract.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On 8 Mar 2010, at 07:30, Jay K wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">diff attached<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">If folks really want to use tables or function calls here, let me know.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The data was historically problematic, though we worked out the problems.<br></blockquote><blockquote type="cite">- It was initialized at runtime which has a race condition, fixed years ago.<br></blockquote><blockquote type="cite">- It can't be "exported" on NT386 (which is the only platform that uses it) and must be statically linked.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The data is still used by Word.Insert and Long.Insert is still a function, but those<br></blockquote><blockquote type="cite">are my next targets.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">This is a case where the user does write a function call. Word.Extract or Long.Extract.<br></blockquote><blockquote type="cite">(So the function should have been called Long__Extract.)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">- Jay<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><blockquote type="cite">Date: Mon, 8 Mar 2010 13:26:36 +0000<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">To: <a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">From: <a href="mailto:jkrell@elego.de">jkrell@elego.de</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Subject: [M3commit] CVS Update: cm3<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">CVSROOT: /usr/cvs<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Changes by: jkrell@birch. 10/03/08 13:26:36<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Modified files:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">cm3/m3-sys/m3back/src/: M3x86.m3 Stackx86.i3 Stackx86.m3<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Log message:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">"rewrite" extract to not use tables and always be inlined for 64bit<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">equivalent C code:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">UT __stdcall extract(UT x, uint32 offset, uint32 count)<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">{<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">x>>= offset;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">x &= ~((~(UT)0) << count);<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">return x;<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">}<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">extract32<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000729: 8B4DEC MOV ECX tv.126[_m]<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000072C: 8B5DF4 MOV EBX tv.124[_a32]<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000072F: D3EB SHR EBX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000731: 8BD1 MOV EDX ECX This is pointless and I'll try to remove.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000733: 8B4DE4 MOV ECX tv.128[_n]<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000736: BEFFFFFFFF MOV ESI $4294967295 I'll look for smaller form of this. or esi -1?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000073B: D3E6 SHL ESI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000073D: F7D6 NOT ESI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000073F: 23DE AND EBX ESI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">extract64<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008E4: 8B4DD8 MOV ECX tv.134[_m]<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008E7: 8B5DE8 MOV EBX tv.131[_a64]<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008EA: 8B55EC MOV EDX tv.131[_a64]+4<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008ED: 0FADD3 SHRD EBX EDX ECX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008F0: D3EA SHR EDX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008F2: F6C120 TEST ECX $32<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008F5: 7400 JE rel8 L.107<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008F7: 8BDA MOV EBX EDX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008F9: 33D2 XOR EDX EDX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">set_label L.107<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008FB: 8BF1 MOV ESI ECX This is pointless and I'll try to remove.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">000008FD: 8B4DD0 MOV ECX tv.136[_n]<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000900: BFFFFFFFFF MOV EDI $4294967295 I'll look for smaller form of this. or edi -1?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000905: B8FFFFFFFF MOV EAX $4294967295 I'll look for smaller form of this. (heck, at least mov edi, eax)<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000090A: 0FA5F8 SHLD EAX EDI ECX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000090D: D3E7 SHL EDI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000090F: F6C120 TEST ECX $32<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000912: 7400 JE rel8 L.108<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000914: 8BC7 MOV EAX EDI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000916: 33FF XOR EDI EDI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">set_label L.108<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">00000918: F7D7 NOT EDI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000091A: F7D0 NOT EAX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000091C: 23DF AND EBX EDI<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">0000091E: 23D0 AND EDX EAX<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">having n or m and n (or just m? I think so.) be constant leads to better code<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">some other small cleanup, like avoiding calling find twice,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">I don't see why it was that way<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><1.txt><br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span> <span class="Apple-tab-span" style="white-space:pre">   </span>   <span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>  <br></blockquote></div></blockquote></div><br></body></html>