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]