[#34261] ComplexFloat — "Kenta Murata" <muraken@...>

村田です.

117 messages 2008/04/06
[#34280] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

村田です.

[#34286] Re: ComplexFloat — Nobuyoshi Nakada <nobu@...> 2008/04/10

なかだです。

[#34288] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34290] Re: ComplexFloat — "U.Nakamura" <usa@...> 2008/04/10

こんにちは、なかむら(う)です。

[#34293] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34296] Re: ComplexFloat — "U.Nakamura" <usa@...> 2008/04/10

こんにちは、なかむら(う)です。

[#34298] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34300] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/10

In article <761216ce0804100221x67f10f12iab12b0e35b6f50e4@mail.gmail.com>,

[#34301] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34303] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/10

まつもと ゆきひろです

[#34314] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/10

利点としては、拡張ライブラリが書きやすい、ということ。正当化の理由とし

[#34316] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34317] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/10

> 私にはいびつな進化という感じはしません.むしろ,せっかく C で実装できるのに

[#34318] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/10

むらたです.

[#34322] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/10

まつもと ゆきひろです

[#34328] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/11

むらたです.

[#34331] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/11

まつもと ゆきひろです

[#34340] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/11

むらたです.

[#34341] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/11

まつもと ゆきひろです

[#34362] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34363] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/12

In article <761216ce0804120723n16bfbad7qdae90f142978d256@mail.gmail.com>,

[#34367] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34368] Re: ComplexFloat — Tanaka Akira <akr@...> 2008/04/12

In article <761216ce0804121011h6132d58fh4916ecbb29d58690@mail.gmail.com>,

[#34369] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34364] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/12

まつもと ゆきひろです

[#34366] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/12

むらたです.

[#34386] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/13

まつもと ゆきひろです

[#34415] Re: ComplexFloat — "Kenta Murata" <muraken@...> 2008/04/15

むらたです.

[#34439] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/17

原です。

[#34442] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/04/17

まつもと ゆきひろです

[#34451] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/18

原です。

[#34455] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/18

> 1. ComplexFloat を組込みにし、Complex を標準ライブラリとして提供する。

[#34457] Re: ComplexFloat — Shin-ichiro HARA <sinara@...> 2008/04/20

原です。

[#34458] Re: ComplexFloat — Tadayoshi Funaba <tadf@...> 2008/04/20

> 分かりににくかったですが、これは、ComplexFloat を含めた組込みの数体系が

[#34502] Re: ComplexFloat — sheepman <sh@...> 2008/04/24

こんばんは sheepman です。

[#34601] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/05/07

まつもと ゆきひろです

[#34603] Re: ComplexFloat — keiju@... (石塚圭樹) 2008/05/07

けいじゅ@いしつかです.

[#34614] Re: ComplexFloat — Yukihiro Matsumoto <matz@...> 2008/05/08

まつもと ゆきひろです

[#34621] Re: ComplexFloat — keiju@... (石塚圭樹) 2008/05/08

けいじゅ@いしつかです.

[ruby-dev:34525] Re: patch for ruby-dev:34236

From: wanabe <s.wanabe@...>
Date: 2008-04-27 03:55:16 UTC
List: ruby-dev #34525
ワナベです。

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;
 	}
     }



-- 
ワナベ

In This Thread