Преглед изворни кода

LibGfx/JPEG: Use a more aggressive inline policy

Some of these functions can be called millions of times even for images
of moderate size. Inlining these functions really helps the compiler and
gives performance improvements up to 10%.
Lucas CHOLLET пре 2 година
родитељ
комит
e252b6e258
1 измењених фајлова са 8 додато и 8 уклоњено
  1. 8 8
      Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp

+ 8 - 8
Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp

@@ -270,14 +270,14 @@ public:
         return jpeg_stream;
     }
 
-    ErrorOr<u8> read_u8()
+    ALWAYS_INLINE ErrorOr<u8> read_u8()
     {
         if (m_byte_offset == m_current_size)
             TRY(refill_buffer());
         return m_buffer[m_byte_offset++];
     }
 
-    ErrorOr<u16> read_u16()
+    ALWAYS_INLINE ErrorOr<u16> read_u16()
     {
         if (m_saved_marker.has_value())
             return m_saved_marker.release_value();
@@ -285,7 +285,7 @@ public:
         return (static_cast<u16>(TRY(read_u8())) << 8) | TRY(read_u8());
     }
 
-    ErrorOr<void> discard(u64 bytes)
+    ALWAYS_INLINE ErrorOr<void> discard(u64 bytes)
     {
         auto const discarded_from_buffer = min(m_current_size - m_byte_offset, bytes);
         m_byte_offset += discarded_from_buffer;
@@ -347,7 +347,7 @@ private:
 
 class HuffmanStream {
 public:
-    ErrorOr<u8> next_symbol(HuffmanTable const& table)
+    ALWAYS_INLINE ErrorOr<u8> next_symbol(HuffmanTable const& table)
     {
         u16 const code = TRY(peek_bits(HuffmanTable::maximum_bits_per_code));
 
@@ -357,7 +357,7 @@ public:
         return symbol_and_size.symbol;
     }
 
-    ErrorOr<u16> read_bits(u8 count = 1)
+    ALWAYS_INLINE ErrorOr<u16> read_bits(u8 count = 1)
     {
         if (count > NumericLimits<u16>::digits()) {
             dbgln_if(JPEG_DEBUG, "Can't read {} bits at once!", count);
@@ -369,7 +369,7 @@ public:
         return value;
     }
 
-    ErrorOr<u16> peek_bits(u8 count)
+    ALWAYS_INLINE ErrorOr<u16> peek_bits(u8 count)
     {
         if (count == 0)
             return 0;
@@ -382,7 +382,7 @@ public:
         return static_cast<u16>((m_bit_reservoir >> (bits_in_reservoir - m_bit_offset - count)) & mask);
     }
 
-    ErrorOr<void> discard_bits(u8 count)
+    ALWAYS_INLINE ErrorOr<void> discard_bits(u8 count)
     {
         m_bit_offset += count;
 
@@ -409,7 +409,7 @@ public:
     }
 
 private:
-    ErrorOr<void> refill_reservoir()
+    ALWAYS_INLINE ErrorOr<void> refill_reservoir()
     {
         auto const bytes_needed = m_bit_offset / bits_per_byte;