diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-22 11:27:46 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-22 11:27:46 +0000 |
commit | bc77bae13827be22ecb4f35029f7268a08b92146 (patch) | |
tree | 585f4d19c3a2e31384d17dfd9bf388c1855f9d48 | |
parent | bb7ac59921a5988758db3cb170a3c79ee8cef829 (diff) | |
download | ruby-bc77bae13827be22ecb4f35029f7268a08b92146.tar.gz |
ruby.h: ASSUME
* include/ruby/ruby.h (ASSUME): hint for optimization, the
expression is assumed to be true always.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | include/ruby/ruby.h | 9 | ||||
-rw-r--r-- | win32/Makefile.sub | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index a27fc5d637..bad0b3f1cc 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -41,8 +41,15 @@ extern "C" { #ifndef NOINLINE # define NOINLINE(x) x #endif +#ifndef ASSUME +# ifdef UNREACHABLE +# define ASSUME(x) (LIKELY(!!(x)) ? (void)0 : UNREACHABLE) +# else +# define ASSUME(x) ((void)0) +# endif +#endif #ifndef UNREACHABLE -# define UNREACHABLE /* unreachable */ +# define UNREACHABLE ((void)0) /* unreachable */ #endif #ifdef __GNUC__ diff --git a/win32/Makefile.sub b/win32/Makefile.sub index e07ed93b60..afcb29cd44 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -587,6 +587,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub #define NOINLINE(x) __declspec(noinline) x !endif #define UNREACHABLE __assume(0) +#define ASSUME(x) __assume(!!(x)) #define FUNC_STDCALL(x) __stdcall x #define FUNC_CDECL(x) __cdecl x #define FUNC_FASTCALL(x) __fastcall x |