summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-06 08:34:50 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-06 08:34:50 +0000
commit62f20b9d58b6f501f40bb70d9df588c0720a695d (patch)
treea13f8d0241c8b0b056659b62970d88f08db90742
parent53fbaeab29da70a4dd7318f7b5879817de2cbd61 (diff)
eval_error.c: trivial optimization
* eval_error.c (warn_print): optimize warn_print with a string literal, with rb_write_error2 instead of rb_write_error. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54007 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--eval_error.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/eval_error.c b/eval_error.c
index 6a0b14cb9b..69090fdf50 100644
--- a/eval_error.c
+++ b/eval_error.c
@@ -3,7 +3,16 @@
* included by eval.c
*/
+#if defined(__GNUC__) && !defined(__PCC__)
+#define warn_print(x) __extension__ ( \
+{ \
+ (__builtin_constant_p(x)) ? \
+ rb_write_error2((x), (long)strlen(x)) : \
+ rb_write_error(x); \
+})
+#else
#define warn_print(x) rb_write_error(x)
+#endif
#define warn_print2(x,l) rb_write_error2((x),(l))
#define warn_print_str(x) rb_write_error_str(x)