[Spice-devel] [PATCH spice-common] quic: Remove 'no-inline' hack

Frediano Ziglio fziglio at redhat.com
Fri May 25 15:51:01 UTC 2018


The quic code goes through a function pointer in two places in order to
try to prevent the compiler from inlining code.
Doing performance measurements this trick does not work anymore
and just make code less readable.

This patch and message was based on a previous work of
Christophe Fergeau.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 common/quic.c | 23 ++---------------------
 1 file changed, 2 insertions(+), 21 deletions(-)

diff --git a/common/quic.c b/common/quic.c
index 12e9b0b..a9a82ba 100644
--- a/common/quic.c
+++ b/common/quic.c
@@ -388,19 +388,10 @@ static void more_io_words(Encoder *encoder)
     encoder->io_end = encoder->io_now + num_io_words;
 }
 
-static void __write_io_word(Encoder *encoder)
-{
-    more_io_words(encoder);
-    *(encoder->io_now++) = encoder->io_word;
-}
-
-static void (*__write_io_word_ptr)(Encoder *encoder) = __write_io_word;
-
 static inline void write_io_word(Encoder *encoder)
 {
     if (encoder->io_now == encoder->io_end) {
-        __write_io_word_ptr(encoder); //disable inline optimizations
-        return;
+        more_io_words(encoder);
     }
     *(encoder->io_now++) = encoder->io_word;
 }
@@ -441,20 +432,10 @@ static inline void flush(Encoder *encoder)
     encode(encoder, 0, 1);
 }
 
-static void __read_io_word(Encoder *encoder)
-{
-    more_io_words(encoder);
-    encoder->io_next_word = GUINT32_FROM_LE(*(encoder->io_now++));
-}
-
-static void (*__read_io_word_ptr)(Encoder *encoder) = __read_io_word;
-
-
 static inline void read_io_word(Encoder *encoder)
 {
     if (encoder->io_now == encoder->io_end) {
-        __read_io_word_ptr(encoder); //disable inline optimizations
-        return;
+        more_io_words(encoder);
     }
     spice_assert(encoder->io_now < encoder->io_end);
     encoder->io_next_word = GUINT32_FROM_LE(*(encoder->io_now++));
-- 
2.17.0



More information about the Spice-devel mailing list