yarv-dev:1105
From: Tadashi Saito <shiba mail2.accsnet.ne.jp>
Date: Fri, 10 Nov 2006 01:10:58 +0900
Subject: [yarv-dev:1105] Re: merge with YARV
こんばんは、斎藤と申します。 極めてどうでもいいことなんですが、忘れないうちに。 On Sat, 04 Nov 2006 00:44:25 +0900 SASADA Koichi <ko1 atdot.net> wrote: > ・YARV のソースレビュー レビューって程のものじゃないんですけれど、気づいた所だけ、 GCC周りを少し調べました。 yarvcore.hで - GCCじゃないときのUNLIKELY()が非常にまずそうです。LIKELY()も同様のスタ イルにしました(意図があったらごめんなさい) - __builtin_expect()はGCC3かららしいので http://gcc.gnu.org/gcc-3.0/features.html チェックするようにしました それで疑問はvm.hで - 131行目 > #if __GNUC__ && (__i386__ || __x86_64__) && __GNUC__ == 3 の最後って、>= 3 でも可ではないのでしょうか? (or bug of 4.x?) - 同じく143行目 > #if OPT_DIRECT_THREADED_CODE の下に > /* for GCC 3.4.x */ とあるので、ifに && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) とか加えちゃった方がいいでしょうか。 - #if __GNUC__ と #ifdef __GNUC__ を書き分けている理由が分からなくて ごめんなさい。 (古いコンパイラって前者を受け入れないのがあったんでしょうか?) とりあえず前半のパッチです。 Index: yarvcore.h =================================================================== --- yarvcore.h (リビジョン 578) +++ yarvcore.h (作業コピー) @@ -76,12 +76,12 @@ #endif /* OPT_CALL_THREADED_CODE */ /* likely */ -#ifdef __GCC__ +#if defined(__GCC__) && __GNUC__ >= 3 #define LIKELY(x) (__builtin_expect((x), 1)) #define UNLIKELY(x) (__builtin_expect((x), 0)) #else /* __GCC__ */ -#define LIKELY(x) ((x) == 1) -#define UNLIKELY(x) ((x) == 0) +#define LIKELY(x) (x) +#define UNLIKELY(x) (x) #endif /* __GCC__ */ #define YARVDEBUG 0 よろしくお願いします。 -- 斎藤ただし -- ML: yarv-dev quickml.atdot.net Info: http://www.atdot.net/~ko1/quickml
1097 2006-11-04 00:44 [ko1 atdot.net ] merge with YARV -> 1105 2006-11-10 01:10 ┗[shiba mail2.accsnet.] 1107 2006-11-14 11:29 ┗[ko1 atdot.net ]