From 888e35f0fed393e8496414e5c285cf4ca4788f67 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 30 Apr 2020 11:43:25 +0200 Subject: AK: Add ALWAYS_INLINE, NEVER_INLINE and FLATTEN macros It's tedious to write (and look at) [[gnu::always_inline]] etc. :^) --- Libraries/LibGfx/PNGLoader.cpp | 6 +++--- Libraries/LibGfx/Painter.cpp | 16 ++++------------ 2 files changed, 7 insertions(+), 15 deletions(-) (limited to 'Libraries/LibGfx') 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 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 -[[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 } } -[[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 -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(); -- cgit v1.2.3