diff options
author | Andreas Kling <kling@serenityos.org> | 2020-04-30 11:43:25 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-04-30 11:43:25 +0200 |
commit | 888e35f0fed393e8496414e5c285cf4ca4788f67 (patch) | |
tree | aa88e2b38bcb7cbb82adb0c0420401b7cb19dcf0 /Libraries/LibGfx | |
parent | f1a8fb1e88f902c9af2f1b18e6375c0b75f7e711 (diff) | |
download | serenity-888e35f0fed393e8496414e5c285cf4ca4788f67.zip |
AK: Add ALWAYS_INLINE, NEVER_INLINE and FLATTEN macros
It's tedious to write (and look at) [[gnu::always_inline]] etc. :^)
Diffstat (limited to 'Libraries/LibGfx')
-rw-r--r-- | Libraries/LibGfx/PNGLoader.cpp | 6 | ||||
-rw-r--r-- | Libraries/LibGfx/Painter.cpp | 16 |
2 files changed, 7 insertions, 15 deletions
diff --git a/Libraries/LibGfx/PNGLoader.cpp b/Libraries/LibGfx/PNGLoader.cpp index a7e64b8a9b..dd22604600 100644 --- a/Libraries/LibGfx/PNGLoader.cpp +++ b/Libraries/LibGfx/PNGLoader.cpp @@ -204,7 +204,7 @@ RefPtr<Gfx::Bitmap> load_png_from_memory(const u8* data, size_t length) return bitmap; } -[[gnu::always_inline]] static inline u8 paeth_predictor(int a, int b, int c) +ALWAYS_INLINE static u8 paeth_predictor(int a, int b, int c) { int p = a + b - c; int pa = abs(p - a); @@ -231,7 +231,7 @@ union [[gnu::packed]] Pixel static_assert(sizeof(Pixel) == 4); template<bool has_alpha, u8 filter_type> -[[gnu::always_inline]] static inline void unfilter_impl(Gfx::Bitmap& bitmap, int y, const void* dummy_scanline_data) +ALWAYS_INLINE static void unfilter_impl(Gfx::Bitmap& bitmap, int y, const void* dummy_scanline_data) { auto* dummy_scanline = (const Pixel*)dummy_scanline_data; if constexpr (filter_type == 0) { @@ -312,7 +312,7 @@ template<bool has_alpha, u8 filter_type> } } -[[gnu::noinline]] static void unfilter(PNGLoadingContext& context) +NEVER_INLINE FLATTEN static void unfilter(PNGLoadingContext& context) { // First unpack the scanlines to RGBA: switch (context.color_type) { diff --git a/Libraries/LibGfx/Painter.cpp b/Libraries/LibGfx/Painter.cpp index b1d80ea7db..6435512404 100644 --- a/Libraries/LibGfx/Painter.cpp +++ b/Libraries/LibGfx/Painter.cpp @@ -44,18 +44,10 @@ # pragma GCC optimize("O3") #endif -#ifndef ALWAYS_INLINE -# if __has_attribute(always_inline) -# define ALWAYS_INLINE __attribute__((always_inline)) -# else -# define ALWAYS_INLINE inline -# endif -#endif - namespace Gfx { template<BitmapFormat format = BitmapFormat::Invalid> -static ALWAYS_INLINE Color get_pixel(const Gfx::Bitmap& bitmap, int x, int y) +ALWAYS_INLINE Color get_pixel(const Gfx::Bitmap& bitmap, int x, int y) { if constexpr (format == BitmapFormat::Indexed8) return bitmap.palette_color(bitmap.bits(y)[x]); @@ -752,12 +744,12 @@ void Painter::draw_scaled_bitmap(const Rect& a_dst_rect, const Gfx::Bitmap& sour } } -[[gnu::flatten]] void Painter::draw_glyph(const Point& point, char ch, Color color) +FLATTEN void Painter::draw_glyph(const Point& point, char ch, Color color) { draw_glyph(point, ch, font(), color); } -[[gnu::flatten]] void Painter::draw_glyph(const Point& point, char ch, const Font& font, Color color) +FLATTEN void Painter::draw_glyph(const Point& point, char ch, const Font& font, Color color) { draw_bitmap(point, font.glyph_bitmap(ch), color); } @@ -936,7 +928,7 @@ void Painter::set_pixel(const Point& p, Color color) m_target->scanline(point.y())[point.x()] = color.value(); } -[[gnu::always_inline]] inline void Painter::set_pixel_with_draw_op(u32& pixel, const Color& color) +ALWAYS_INLINE void Painter::set_pixel_with_draw_op(u32& pixel, const Color& color) { if (draw_op() == DrawOp::Copy) pixel = color.value(); |