[#12164] patch for ext/gdbm — Koji Arai <JCA02266@...>

新井です。

24 messages 2001/02/04
[#12168] Re: patch for ext/gdbm — matz@... (Yukihiro Matsumoto) 2001/02/05

まつもと ゆきひろです

[#12176] Re: patch for ext/gdbm — Koji Arai <JCA02266@...> 2001/02/05

新井です。

[#12179] Re: patch for ext/gdbm — matz@... (Yukihiro Matsumoto) 2001/02/06

まつもと ゆきひろです

[#12219] Re: patch for ext/gdbm — Koji Arai <JCA02266@...> 2001/02/12

新井です。

[#12220] Re: patch for ext/gdbm — Koji Arai <JCA02266@...> 2001/02/12

新井です。

[#12256] set_trace_func — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2001/02/17

[#12293] crash on proc without a block — Kenichi Komiya <kom@...1.accsnet.ne.jp>

15 messages 2001/02/25

[#12323] Re: [ruby-list:28364] class definition extension — "K.Kosako" <kosako@...>

ruby-listから移動しました。

13 messages 2001/02/28
[#12324] Re: [ruby-list:28364] class definition extension — matz@... (Yukihiro Matsumoto) 2001/02/28

まつもと ゆきひろです

[ruby-dev:12178] Re: FRAME argv

From: Toyofuku <toyofuku@...>
Date: 2001-02-06 02:13:51 UTC
List: ruby-dev #12178
  豊福です。

まつもとさん
> |  FRAME の argv を使っているように思えるのは
> |(1) eval.c の NODE_ZUPER と NODE_ATTRSET
> |(2) gc.c の rb_gc_mark_fram()
> |  (1) の方は他の方法で値を渡せそうな気がするし、
> |(2) の方は FRAM からたどらなくても argv[] は
> |スタックか NODE_ALLOCA にとられるのでそちらから
> |たどられるのではという気がしたんですが。
>
>  (2) SETUP_ARGSマクロでALLOCA_Nを使ってるところもTMP_ALLOCA
>      に変えれば、それで良いかもしれませんね(allocaの領域はス
>      タックに取られるとは限りませんので、保護する必要があり
>      ます)。

  alloca はスタックに取られるものとばかり思ってました。
スタックに取らない方式ってどうやってるんですか。

>  (1) 「他の方法」はどんな方法でしょう?

  うーん、実は (2) の方が重要なのだろうと予想しあまり
(1) のことはあまり深く考えていませんでした。(1) の方が
本質だったのか。

  最初は C の関数コールの引数で argv を渡せば FRAME の
argv もいらなくなると思ったのですが、それやるとすると
すべての rb_eval() に argv を渡さないといけなくなるし、
proc化するときも argv がコピーできないですね。いや、
そもそも proc では argv 使わないんじゃないかと思ってた
んですが proc の中からも super 呼べるんですね。

  他に、argv[] の領域を SCOPE の local_vars の最後に
とるというの考えたんですがややっこしくなるだけでよく
ないですね。

  ところで blk_copy_prev() と frame_dup() の argv の
コピーは共通化できませんか。ささやかな節約ですけど。
---
                        豊福
                        toyofuku@juice.or.jp

In This Thread