[#34194] File.read (または String#include?) でSEGV — wanabe <s.wanabe@...>
ワナベと申します。
[#34200] Resolv.getaddress がエラーになる — "Kouhei Yanagita" <yanagi@...>
柳田です。
[#34239] MVM interface draft — Nobuyoshi Nakada <nobu@...>
なかだです。
[#34261] ComplexFloat — "Kenta Murata" <muraken@...>
村田です.
村田です.
なかだです。
むらたです.
こんにちは、なかむら(う)です。
むらたです.
こんにちは、なかむら(う)です。
むらたです.
In article <761216ce0804100221x67f10f12iab12b0e35b6f50e4@mail.gmail.com>,
むらたです.
まつもと ゆきひろです
利点としては、拡張ライブラリが書きやすい、ということ。正当化の理由とし
むらたです.
> 私にはいびつな進化という感じはしません.むしろ,せっかく C で実装できるのに
むらたです.
まつもと ゆきひろです
むらたです.
まつもと ゆきひろです
むらたです.
まつもと ゆきひろです
むらたです.
In article <761216ce0804120723n16bfbad7qdae90f142978d256@mail.gmail.com>,
むらたです.
In article <761216ce0804121011h6132d58fh4916ecbb29d58690@mail.gmail.com>,
むらたです.
In article <761216ce0804121039l605a8ec6sebe52afdbbb52160@mail.gmail.com>,
むらたです.
まつもと ゆきひろです
むらたです.
まつもと ゆきひろです
むらたです.
原です。
まつもと ゆきひろです
遠藤と申します。
原です。
In article <4808653F.80607@blade.nagaokaut.ac.jp>,
原です。
> 1. ComplexFloat を組込みにし、Complex を標準ライブラリとして提供する。
原です。
> 分かりににくかったですが、これは、ComplexFloat を含めた組込みの数体系が
こんばんは sheepman です。
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
Complex と ComplexFloat とクラスをふたつに分ける理由がどうに
原です。
まつもと ゆきひろです
原です。
[#34266] Ruby1.9 での $SAFE==4 時の autoload 動作 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#34272] patch for [ruby-core:14537] — wanabe <s.wanabe@...>
ワナベと申します。
[#34278] Re: [ruby-cvs:23187] Ruby:r15947 (trunk): * lib/generator.rb: removed obsolete library. [ruby-core:16233] — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
[#34285] Complex#scalar? returns false — "Kenta Murata" <muraken@...>
むらたです.
[#34313] Enumerable#find_index vs. Array#index — "Akinori MUSHA" <knu@...>
[ruby-talk:178495] が発端で Enumerable#find_index というのが
まつもと ゆきひろです
[#34352] patch for — wanabe <s.wanabe@...>
ワナベと申します。
[#34391] Preparing for 1.8.7-preview1 — "Akinori MUSHA" <knu@...>
延び延びになってしまいましたが、ようやく enumerator 関連、
[#34393] fluent comma — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34402] OpenSSL::SSL::SSLContext#set_params — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#34430] str_new() may create broken string — wanabe <s.wanabe@...>
ワナベと申します。
[#34460] patch for ruby-dev:34236 — wanabe <s.wanabe@...>
ワナベと申します。
[#34476] coerce with Rational and Complex — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34512] [ruby-core:16238]の検証 — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#34515] M17N のリファレンス — sheepman <sh@...>
こんにちは sheepman です。
[#34540] 0**-1 == 0 ? — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
ささだです。
[ruby-dev:34525] Re: patch for ruby-dev:34236
ワナベです。
08/04/21 に Yusuke ENDOH<mame@tsg.ne.jp> さんは書きました:
> 2008/04/21 9:57 SASADA Koichi <ko1@atdot.net>:
> > これ,ぱっと例が出ないんですが,本当に大丈夫でしょうか.iseq に対
> > するアクセスなので,副作用が.
>
> こんな感じのコードで挙動が変わりますね。
iseq に触らず、rb_block_t に cref を持たせるように書き直しました。
遠藤さんの書かれた例が動作するようにするため、1.8と同じように
instance_eval/module_eval のブロックに引数 self を与えるようにしています。
(yield_under(klass, self, rb_ary_new3(1, self))の部分)
問題がありましたらこの部分は無視してください。
Index: vm_core.h
===================================================================
--- vm_core.h (revision 16174)
+++ vm_core.h (working copy)
@@ -337,6 +337,7 @@
VALUE *dfp; /* share with method frame if it's only block */
rb_iseq_t *iseq;
VALUE proc;
+ NODE *cref;
} rb_block_t;
#define GetThreadPtr(obj, ptr) \
Index: eval.c
===================================================================
--- eval.c (revision 16174)
+++ eval.c (working copy)
@@ -1845,6 +1845,9 @@
block = *blockptr;
block.self = self;
*th->cfp->lfp = GC_GUARDED_PTR(&block);
+ stored_cref = block.cref;
+ block.cref = vm_cref_push(th, under, NOEX_PUBLIC);
+ block.cref->nd_file = stored_cref;
}
while (!RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
@@ -1922,7 +1925,7 @@
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)",
argc);
}
- return yield_under(klass, self, Qundef);
+ return yield_under(klass, self, rb_ary_new3(1, self));
}
else {
char *file = "(eval)";
Index: vm.c
===================================================================
--- vm.c (revision 16174)
+++ vm.c (working copy)
@@ -261,6 +261,7 @@
env->block.lfp = cfp->lfp;
env->block.dfp = cfp->dfp;
env->block.iseq = cfp->iseq;
+ env->block.cref = 0;
if (VMDEBUG &&
(!(cfp->lfp[-1] == Qnil ||
@@ -388,6 +389,7 @@
proc->block.lfp = block->lfp;
proc->block.dfp = block->dfp;
proc->block.iseq = block->iseq;
+ proc->block.cref = 0;
proc->block.proc = procval;
proc->envval = envval;
proc->safe_level = th->safe_level;
@@ -539,6 +541,8 @@
return vm_call_super(GET_THREAD(), argc, argv);
}
+void vm_cfp_svar_set(rb_thread_t *th, rb_control_frame_t *cfp, VALUE
key, VALUE val);
+
/* C -> Ruby: block */
static VALUE
@@ -568,6 +572,10 @@
self, GC_GUARDED_PTR(block->dfp),
iseq->iseq_encoded + opt_pc, cfp->sp + arg_size, block->lfp,
iseq->local_size - arg_size);
+ if (block->cref) {
+ vm_cfp_svar_set(th, th->cfp, 2, (VALUE)block->cref);
+ block->cref = block->cref->nd_file;
+ }
val = vm_eval_body(th);
}
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c (revision 16174)
+++ vm_insnhelper.c (working copy)
@@ -233,6 +233,7 @@
blockptr = RUBY_VM_GET_BLOCK_PTR_IN_CFP(cfp);
blockptr->iseq = blockiseq;
blockptr->proc = 0;
+ blockptr->cref = 0;
*block = blockptr;
}
}
--
ワナベ