[#30872] segv when reentering into Fiber with callcc — sheepman <sheepman@...>
こんばんは、sheepman です。
ささだです。
遠藤と申します。
ささだです。
遠藤です。
ささだです。
まつもと ゆきひろです
In article <E1Hw9be-0002Rs-Qg@x31>,
まつもと ゆきひろです
[#30920] Integer#prime_division と Prime — TOYOFUKU Chikanobu <nobu_toyofuku@...>
豊福です。
[#30929] secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
In article <4669066C.2080307@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
In article <46694461.4060706@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
In article <46697C0B.8060402@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
In article <4669DAB0.4050705@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
In article <466AA73C.9030407@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
なかだです。
-----BEGIN PGP SIGNED MESSAGE-----
In article <466D5B1D.8030205@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
In article <469253E9.9010203@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
In article <4694338C.7090303@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
In article <4694E6A6.2060303@sarion.co.jp>,
-----BEGIN PGP SIGNED MESSAGE-----
なかだです。
-----BEGIN PGP SIGNED MESSAGE-----
なかだです。
-----BEGIN PGP SIGNED MESSAGE-----
[#30971] Linux/ia64で'ucontext_t' undeclared — akira yamada / やまだあきら <akira@...>
最近のRuby 1.9をLinux/ia64上でmakeしようとすると
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
In article <E1HygwQ-0001OA-4f@x31>,
ささだです。
[#30996] new block parameter rule — SASADA Koichi <ko1@...>
ささだです。
[#31002] ("a".."f").step(2) {|x| p x} — Tanaka Akira <akr@...>
string の range の step で引数が効かないように思います。
まつもと ゆきひろです
ささだです。
まつもと ゆきひろです
[#31028] rb_get_interned — Nobuyoshi Nakada <nobu@...>
なかだです。
[#31034] Re: [ruby-cvs:19815] Ruby:r12579 (trunk): * parse.y (rb_intern2): name may not be NUL-terminated. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#31046] Conditional jump or move depends on uninitialised value(s) in TOPLEVEL_BINDING — Tanaka Akira <akr@...>
valgrind をかけたところとりあえず最初のが
ささだです。
[#31063] make error at bcc32 — "Nebata" <tnebata@...>
ねばたです。
[#31066] consts for gdb support — Nobuyoshi Nakada <nobu@...>
なかだです。
[#31068] $&;[] dumps core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
ささだです。
遠藤です。
ささだです。
遠藤です。
[#31072] {*0} dumps core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
ささだです。
[ruby-dev:31016] Re: ("a".."f").step(2) {|x| p x}
ささだです。
Yukihiro Matsumoto wrote:
> ごめんなさい。「ひとつのスタックフレームには 1 つのブロック渡
> ししか対応していません」というのがなにを意味するのかよくわか
> りません。ので、変な制限でないのかどうかの判断もできません。
> rb_iterate()全般が動かないというわけではないようですが、たと
> えばeach_with_indexが動いてstepが動かない理由ってのはすぐに
> ピンとは来ませんね。
成瀬さん、ソースを読んでくれてありがとうございました。ここで
大事なのは rb_iterate に渡す関数から rb_call0 が呼ばれていない
ということです。
rb_iterate が何をするのか、その定義はよくわからなかったので
すが、リファレンスマニュアルをみると次のようになっています。
> まず call_proc(data1) を実行します。そしてその関数かその直下のメソッドで yield が発生すると以下が実行されます。
(1)「その関数か」(2)「その直下のメソッド」という定義を、私は
(2) だけ、というように実装したということになります。これは、
NODE_ITER の使い方、および enum.c での利用法を見てそのように判
断しました(てっきり、(2) の使い方だけかと思っていた)。(1) に
依存したプログラムってどれくらいあるでしょうか。直すのは結構大
変そうです。
なので、現在の rb_iterate() の仕様による解決方法は
str_step() で rb_funcall() で何らかのメソッドを呼べばよいとい
うことになります。
----
「ひとつのスタックフレームには 1 つのブロック渡ししか対応し
ていません」の意味ですが、まず ('a' .. 'b').step(2){ (A) } で
は、Range#step に、1つのブロック渡しをされています。その時点
で、このスタックフレームには1つのブロックが登録されたことにな
ります。
rb_iterate() を実行すると、「次のメソッド呼び出し時に C で記
述したブロックを渡す」という意味となります(同じスタックフレー
ムに複数のブロックは積めない)。なので、Range#step 処理中(同
じスタックフレーム)で yield したときの挙動は (A) を呼び出す、
ということになります。たとえば、Range#step が String#step を呼
び出せば、正しく動きます(exclを渡す方法がないんだけど)。
--
// SASADA Koichi at atdot dot net