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

yarv-dev:166

From: SASADA Koichi <ko1 atdot.net>
Date: Wed, 1 Sep 2004 10:13:08 +0900
Subject: [yarv-dev:166] Re: prot_tag accessor

 Nobuyoshi Nakada <nobu.nokada softhome.net>
 Wed, 01 Sep 2004 09:43:31 +0900 / [yarv-dev:165] Re: prot_tag accessor
 への返信です。

 ささだです。

>> 1. prot_tag を static では無くす
>> 
>>  少し名前が単純なので心配。
>> 
>> 1'. prot_tag の名前を変えて公開
>> 
>> struct tag *ruby_prot_tag;
>> #define prot_tag ruby_prot_tag
>
>struct tagってのも単純すぎるでしょうね。

 これは別に使う側で定義すればいいから問題ないです。
(もう変わんないですよねえ・・・)

>> 2. アクセサ関数を設ける
>> 
>> たとえば:
>> 
>> void rb_eval_push_prot_tag(tag *tag){
>>   tag.prev_tag = prot_tag;
>>   prot_tag = tag;
>> }
>> void rb_eval_pop_prot_tag(){
>>   prot_tag = prot_tag.prev_tag;
>> }
>
>ruby_push_tag()/ruby_pop_tag()で今のPUSH_TAG()/POP_TAG()相当と
>か?
>
 PUSH_TAG() は tag の確保が入るから違うものになるでしょうけれど。




 現状は 1' にして、

#define PUSH_TAG(ptag) do {            \
  _tag.prev = ruby_prot_tag;           \
  ruby_prot_tag = &_tag;               \
} while(0)
  
#define POP_TAG() do {                 \
  ruby_prot_tag = ruby_prot_tag->prev; \
} while(0)

#define EXEC_TAG()                     \
  (FLUSH_REGISTER_WINDOWS, setjmp(ruby_prot_tag->buf))

#define JUMP_TAG(st) do {              \
  longjmp(ruby_prot_tag->buf,(st));    \
} while (0)

 みたいにしてます。他は多分要らないし。

 要るかなぁ。ruby API 呼ぶならフレームとかも保存しないと駄目
な気がしてきた。



--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

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

       164 2004-09-01 07:26 [ko1 atdot.net       ] prot_tag accessor                       
       165 2004-09-01 09:43 ┗[nobu.nokada softhome]                                       
->     166 2004-09-01 10:13  ┗[ko1 atdot.net       ]                                     
       167 2004-09-01 11:22   ┗[nobu.nokada softhome]