[#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 <761216ce0804121126i557ad854j6e52283f7ef4542@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@...>
西山和広です。
[#34417] Ruby 1.8.7-preview1 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.7-preview1 をリリースしました。伸び伸びのスケジュール
[#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:34273] patch for [ruby-core:15551]
ワナベと申します。
[ruby-core:15551]に対するパッチを書きました。
Proc#curry で作られた Proc オブジェクトにブロックを渡せるようにしました。
proc_call() 中の BUILTIN_TYPE(proc->block.iseq) != T_NODE の意味が
よく分からなかったので外してしまいましたが、
何か特別な意図のある式なのでしょうか。
Index: proc.c
===================================================================
--- proc.c (revision 15910)
+++ proc.c (working copy)
@@ -496,8 +496,7 @@
rb_block_t *blockptr = 0;
GetProcPtr(procval, proc);
- if (BUILTIN_TYPE(proc->block.iseq) != T_NODE &&
- proc->block.iseq->arg_block != -1) {
+ if (proc->block.iseq->arg_block != -1) {
if (rb_block_given_p()) {
rb_proc_t *proc;
@@ -1620,7 +1619,7 @@
arity = make_curry_proc(proc, passed, arity);
return arity;
}
- arity = rb_proc_call(proc, passed);
+ arity = proc_call(RARRAY_LEN(passed), RARRAY_PTR(passed), proc);
return arity;
}
Index: vm.c
===================================================================
--- vm.c (revision 15910)
+++ vm.c (working copy)
@@ -572,7 +572,7 @@
val = vm_eval_body(th);
}
else {
- val = vm_yield_with_cfunc(th, block, self, argc, argv);
+ val = vm_yield_with_cfunc(th, block, self, argc, argv, blockptr);
}
return val;
}
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c (revision 15910)
+++ vm_insnhelper.c (working copy)
@@ -644,7 +644,7 @@
static inline VALUE
vm_yield_with_cfunc(rb_thread_t *th, rb_block_t *block,
- VALUE self, int argc, VALUE *argv)
+ VALUE self, int argc, VALUE *argv, rb_block_t *blockptr)
{
NODE *ifunc = (NODE *) block->iseq;
VALUE val;
@@ -665,7 +665,15 @@
self, (VALUE)block->dfp,
0, th->cfp->sp, block->lfp, 1);
- val = (*ifunc->nd_cfnc) (arg, ifunc->nd_tval, argc, argv);
+ if (blockptr) {
+ VALUE store_block = th->cfp->lfp[0];
+ th->cfp->lfp[0] = GC_GUARDED_PTR(blockptr);
+ val = (*ifunc->nd_cfnc) (arg, ifunc->nd_tval, argc, argv);
+ th->cfp->lfp[0] = store_block;
+ }
+ else {
+ val = (*ifunc->nd_cfnc) (arg, ifunc->nd_tval, argc, argv);
+ }
th->cfp++;
return val;
@@ -821,7 +829,7 @@
return Qundef;
}
else {
- val = vm_yield_with_cfunc(th, block, block->self, argc,
STACK_ADDR_FROM_TOP(argc));
+ val = vm_yield_with_cfunc(th, block, block->self, argc,
STACK_ADDR_FROM_TOP(argc), 0);
POPN(argc); /* TODO: should put before C/yield? */
return val;
}
--
ワナベ