<html>
<body>
  <div id="body" style="background-color:#ffffff;" >
<table cellspacing="0" cellpadding="0" border="0" rules="cols">
<tr class="head" style="border-bottom-width:1px;border-bottom-style:solid;" ><td class="headtd" style="padding:0;padding-top:.2em;" colspan="4">Commit in <b><tt>lxdream</tt></b></td></tr>
<tr><td><tt><a href="#file1">acinclude.m4</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+21</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">76c5d1064262 -> e04e4af64626</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file2">config.h.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+3</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-3</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">76c5d1064262 -> e04e4af64626</td></tr>
<tr><td><tt><a href="#file3">configure</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+58</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">76c5d1064262 -> e04e4af64626</td></tr>
<tr class="alt" style=";" ><td><tt><a href="#file4">configure.in</a></tt></td><td id="addedalt" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ccf7cc;" align="right">+2</td><td></td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">76c5d1064262 -> e04e4af64626</td></tr>
<tr><td><tt>src/xlat/x86/<a href="#file5">x86op.h</a></tt></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+4</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-4</td><td class="headtd2" style="padding-left:.3em;padding-right:.3em;" nowrap="nowrap">76c5d1064262 -> e04e4af64626</td></tr>
<tr><td></td><td id="added" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ddffdd;" align="right">+88</td><td id="removed" class="headtd2" style="padding-left:.3em;padding-right:.3em; background-color:#ffdddd;" align="right">-7</td><td></td></tr>
</table>
<small id="info" style="color: #888888;" >5 modified files</small><br />
<pre class="comment" style="white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;padding:4px;border:1px dashed #000000;background-color:#ffffdd;" >
Suggest to the compiler a little more firmly that it inline the x86op
functions (as these are nearly always called with constants, they can
usually be reduced down pretty dramatically)
</pre>
<hr /><a name="file1" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>acinclude.m4</b></big> <small id="info" style="color: #888888;" >76c5d1064262 -> e04e4af64626</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/acinclude.m4
+++ lxdream/acinclude.m4
@@ -18,6 +18,27 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >    $2 ])
 ])
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+# AC_CHECK_FORCEINLINE([if-ok],[if-notok])
+# Test if the compiler recognizes __attribute__((always_inline))
+# -----------------------
+AC_DEFUN([AC_CHECK_FORCEINLINE], [
+AC_MSG_CHECKING([support for force inlining]);
+AC_COMPILE_IFELSE([
+  AC_LANG_SOURCE([[
+static int __attribute__((always_inline)) foo(int a, int b) { return a+b; }
+
+int main(int argc, char *argv[])
+{
+   return foo( 1, 2 ) == 3 ? 0 : 1;
+}]])], [ 
+   FORCEINLINE="__attribute__((always_inline))"
+   AC_MSG_RESULT([$FORCEINLINE])
+   $1 ], [ 
+   FORCEINLINE=""
+   AC_MSG_RESULT([no])
+   $2 ])
+])
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > # AC_CHECK_FRAME_ADDRESS([if-ok],[if-notok])
 # Test if the compiler will let us modify the return address on the stack
 # via __builtin_frame_address()
</pre></div>
<hr /><a name="file2" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>config.h.in</b></big> <small id="info" style="color: #888888;" >76c5d1064262 -> e04e4af64626</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/config.h.in
+++ lxdream/config.h.in
@@ -25,6 +25,9 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /* Enable watchpoints */
 #undef ENABLE_WATCH
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+/* Forcibly inline code */
+#undef FORCEINLINE
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /* translation domain */
 #undef GETTEXT_PACKAGE
 
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -76,9 +79,6 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /* Define if your <locale.h> file defines LC_MESSAGES. */
 #undef HAVE_LC_MESSAGES
 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-/* Define to 1 if you have the `GL' library (-lGL). */
-#undef HAVE_LIBGL
-
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /* Define to 1 if you have the `OSMesa' library (-lOSMesa). */
 #undef HAVE_LIBOSMESA
 
</pre></div>
<hr /><a name="file3" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>configure</b></big> <small id="info" style="color: #888888;" >76c5d1064262 -> e04e4af64626</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/configure
+++ lxdream/configure
@@ -8124,6 +8124,64 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > 
 
 
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+{ echo "$as_me:$LINENO: checking support for force inlining" >&5
+echo $ECHO_N "checking support for force inlining... $ECHO_C" >&6; };
+cat >conftest.$ac_ext <<_ACEOF
+
+  /* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+static int __attribute__((always_inline)) foo(int a, int b) { return a+b; }
+
+int main(int argc, char *argv[])
+{
+   return foo( 1, 2 ) == 3 ? 0 : 1;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+   FORCEINLINE="__attribute__((always_inline))"
+   { echo "$as_me:$LINENO: result: $FORCEINLINE" >&5
+echo "${ECHO_T}$FORCEINLINE" >&6; }
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+   FORCEINLINE=""
+   { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+cat >>confdefs.h <<_ACEOF
+#define FORCEINLINE $FORCEINLINE
+_ACEOF
+
+
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > { echo "$as_me:$LINENO: checking if we have a working __builtin_frame_address()" >&5
 echo $ECHO_N "checking if we have a working __builtin_frame_address()... $ECHO_C" >&6; };
 if test "$cross_compiling" = yes; then
</pre></div>
<hr /><a name="file4" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>configure.in</b></big> <small id="info" style="color: #888888;" >76c5d1064262 -> e04e4af64626</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/configure.in
+++ lxdream/configure.in
@@ -178,6 +178,8 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > AC_CHECK_FASTCALL([
    AC_DEFINE(HAVE_FASTCALL, [1], [Use fast register-passing calling conventions])
 ])
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+AC_CHECK_FORCEINLINE()
+AC_DEFINE_UNQUOTED(FORCEINLINE, [$FORCEINLINE], [Forcibly inline code])
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > AC_CHECK_FRAME_ADDRESS( [
    AC_DEFINE(HAVE_FRAME_ADDRESS, [1], [Define if we have a working builtin frame_address])
 ], [ AC_MSG_WARN([Memory exceptions will be slow]) ])
</pre></div>
<hr /><a name="file5" /><div class="file" style="border:1px solid #eeeeee;margin-top:1em;margin-bottom:1em;" >
<span class="pathname" style="font-family:monospace; float:right;" >lxdream/src/xlat/x86</span><br />
<div class="fileheader" style="margin-bottom:.5em;" ><big><b>x86op.h</b></big> <small id="info" style="color: #888888;" >76c5d1064262 -> e04e4af64626</small></div>
<pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >--- lxdream/src/xlat/x86/x86op.h
+++ lxdream/src/xlat/x86/x86op.h
@@ -154,7 +154,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > /**
  * Encode opcode+reg with no mod/rm (eg MOV imm64, r32)
  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-static void x86_encode_opcodereg( int rexw, uint32_t opcode, int reg )
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >inline </span>void x86_encode_opcodereg( int rexw, uint32_t opcode, int reg )
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
     int rex = rexw;
     reg &= 0x0F;
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -174,7 +174,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * @param rr reg field 
  * @param rb r/m field
  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-static void x86_encode_reg_rm( int rexw, uint32_t opcode, int rr, int rb )
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >inline </span>void x86_encode_reg_rm( int rexw, uint32_t opcode, int rr, int rb )
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
     int rex = rexw;
     rr &= 0x0F;
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -203,7 +203,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * @param ss Scale shift (0..3) applied to index register (ignored if no index register)
  * @param disp32 Signed displacement (0 for none)
  */ 
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-static <span id="removedchars" style="background-color:#ff9999;font-weight:bolder;" >void</span> x86_encode_modrm( int rexw, uint32_t opcode, int rr, int rb, int rx, int ss, int32_t disp32 )
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >inline void FORCEINLINE</span> x86_encode_modrm( int rexw, uint32_t opcode, int rr, int rb, int rx, int ss, int32_t disp32 )
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
     /* Construct the rex prefix where necessary */
     int rex = rexw;
</pre><pre class="diff" style="margin:0;" ><small id="info" style="color: #888888;" >@@ -290,7 +290,7 @@
</small></pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" >  * @param rr mod/rm reg field
  * @param disp32 RIP-relative displacement
  */
</pre><pre id="removed" class="diff" style="margin:0; background-color:#ffdddd;" >-static void x86_encode_modrm_rip(int rexw, uint32_t opcode, int rr, int32_t disp32)
</pre><pre id="added" class="diff" style="margin:0; background-color:#ddffdd;" >+static <span id="addedchars" style="background-color:#99ff99;font-weight:bolder;" >inline </span>void x86_encode_modrm_rip(int rexw, uint32_t opcode, int rr, int32_t disp32)
</pre><pre id="context" class="diff" style="margin:0; background-color:#eeeeee;" > {
     int rex = rexw;
     rr &= 0x0F;
</pre></div>
<center><small>Chaos Theory</small></center>
</div></body></html>