Commit 7b19a49b by Geoff Lang Committed by Commit Bot

Use LIKELY and UNLIKELY macros to wrap error generation.

BUG=609673 Change-Id: I247f561712e30aa10bad77fabf614501d596915e Reviewed-on: https://chromium-review.googlesource.com/1021995Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 629bb259
...@@ -101,4 +101,15 @@ ...@@ -101,4 +101,15 @@
// We will undef the macro so that the function name does not get replaced // We will undef the macro so that the function name does not get replaced
#undef MemoryBarrier #undef MemoryBarrier
// Macro for hinting that an expression is likely to be true/false.
#if !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
#if defined(__GNUC__) || defined(__clang__)
#define ANGLE_LIKELY(x) __builtin_expect(!!(x), 1)
#define ANGLE_UNLIKELY(x) __builtin_expect(!!(x), 0)
#else
#define ANGLE_LIKELY(x) (x)
#define ANGLE_UNLIKELY(x) (x)
#endif // defined(__GNUC__) || defined(__clang__)
#endif // !defined(ANGLE_LIKELY) || !defined(ANGLE_UNLIKELY)
#endif // COMMON_PLATFORM_H_ #endif // COMMON_PLATFORM_H_
...@@ -2453,7 +2453,7 @@ void Context::getProgramInterfaceivRobust(GLuint program, ...@@ -2453,7 +2453,7 @@ void Context::getProgramInterfaceivRobust(GLuint program,
void Context::handleError(const Error &error) const void Context::handleError(const Error &error) const
{ {
if (error.isError()) if (ANGLE_UNLIKELY(error.isError()))
{ {
GLenum code = error.getCode(); GLenum code = error.getCode();
mErrors.insert(code); mErrors.insert(code);
......
...@@ -226,7 +226,7 @@ inline Error NoError() ...@@ -226,7 +226,7 @@ inline Error NoError()
#define ANGLE_TRY_TEMPLATE(EXPR, FUNC) \ #define ANGLE_TRY_TEMPLATE(EXPR, FUNC) \
{ \ { \
auto ANGLE_LOCAL_VAR = EXPR; \ auto ANGLE_LOCAL_VAR = EXPR; \
if (ANGLE_LOCAL_VAR.isError()) \ if (ANGLE_UNLIKELY(ANGLE_LOCAL_VAR.isError())) \
{ \ { \
FUNC(ANGLE_LOCAL_VAR); \ FUNC(ANGLE_LOCAL_VAR); \
} \ } \
...@@ -239,7 +239,7 @@ inline Error NoError() ...@@ -239,7 +239,7 @@ inline Error NoError()
#define ANGLE_TRY_RESULT(EXPR, RESULT) \ #define ANGLE_TRY_RESULT(EXPR, RESULT) \
{ \ { \
auto ANGLE_LOCAL_VAR = EXPR; \ auto ANGLE_LOCAL_VAR = EXPR; \
if (ANGLE_LOCAL_VAR.isError()) \ if (ANGLE_UNLIKELY(ANGLE_LOCAL_VAR.isError())) \
{ \ { \
return ANGLE_LOCAL_VAR.getError(); \ return ANGLE_LOCAL_VAR.getError(); \
} \ } \
...@@ -251,7 +251,7 @@ inline Error NoError() ...@@ -251,7 +251,7 @@ inline Error NoError()
#define ANGLE_SWALLOW_ERR(EXPR) \ #define ANGLE_SWALLOW_ERR(EXPR) \
{ \ { \
auto ANGLE_LOCAL_VAR = EXPR; \ auto ANGLE_LOCAL_VAR = EXPR; \
if (ANGLE_LOCAL_VAR.isError()) \ if (ANGLE_UNLIKELY(ANGLE_LOCAL_VAR.isError())) \
{ \ { \
ERR() << "Unhandled internal error: " << ANGLE_LOCAL_VAR; \ ERR() << "Unhandled internal error: " << ANGLE_LOCAL_VAR; \
} \ } \
......
...@@ -667,7 +667,7 @@ VkImageViewType GetImageViewType(gl::TextureType textureType); ...@@ -667,7 +667,7 @@ VkImageViewType GetImageViewType(gl::TextureType textureType);
#define ANGLE_VK_TRY(command) \ #define ANGLE_VK_TRY(command) \
{ \ { \
auto ANGLE_LOCAL_VAR = command; \ auto ANGLE_LOCAL_VAR = command; \
if (ANGLE_LOCAL_VAR != VK_SUCCESS) \ if (ANGLE_UNLIKELY(ANGLE_LOCAL_VAR != VK_SUCCESS)) \
{ \ { \
return rx::vk::Error(ANGLE_LOCAL_VAR, __FILE__, __LINE__); \ return rx::vk::Error(ANGLE_LOCAL_VAR, __FILE__, __LINE__); \
} \ } \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment