[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:1110

From: "U.Nakamura" <usa garbagecollect.jp>
Date: Thu, 28 Jun 2007 09:36:33 +0900
Subject: [yarv-dev:1110] Re: call threading v.s. switch threading

こんにちは、なかむら(う)です。

In message "[yarv-dev:1109] call threading v.s. switch threading"
    on Jun.28,2007 04:57:56, <ko1 atdot.net> wrote:
|  一応、call は fastcall を指定してあります。しかし、typedef
| 時に設定する場所が gcc と VC で違って、きれいに書けないとい
| う。FASTCALL_TYPEDEF を作るほうがよかったかも。

configureでFUNC_CDECL、FUNC_STDCALLを調べてdefineしてるので、
fastcallも同様にconfigureでFUNC_FASTCALLという名でdefineした
方がよかったかもしれません。
また、gccでは

int __attribute__ ((fastcall)) foo(int);

と宣言できたり、

typedef int (__attribute__ ((fastcall)) *TypeFoo)(int);

とtypedefできたりするような気がするので、

/* ここは本当はconfig.hに */
#if __GCC__
#define FUNC_FASTCALL(x) __attribute__ ((fastcall))
#elif defined(_MSC_VER)
#define FUNC_FASTCALL(x) __fastcall x
#else
#define FUNC_FASTCALL(x) x
#endif

typedef rb_control_frame_t *
  (FUNC_FASTCALL(*insn_func_type))(rb_thread_t *, rb_control_frame_t *);

#define INSN_ENTRY(insn) \
  static rb_control_frame_t * \
    FUNC_FASTCALL(LABEL(insn))(rb_thread_t *th, rb_control_frame_t *reg_cfp) {


... という感じでよかったりするんじゃないかと思うのですが、ど
うでしょうか?
# なんか誤解してるかな...


それでは。
-- 
U.Nakamura <usa garbagecollect.jp>
参考文献 [ruby-dev:28970]



--
ML: yarv-dev quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

      1109 2007-06-28 04:57 [ko1 atdot.net       ] call threading v.s. switch threading    
->    1110 2007-06-28 09:36 ┗[usa garbagecollect.j]                                       
      1111 2007-06-28 09:47  ┗[usa garbagecollect.j]                                     
      1112 2007-06-28 22:24   ┗[ko1 atdot.net       ]                                   
      1113 2007-06-29 13:28    ┗[usa garbagecollect.j]