[#1320] [MethodIndex] Bug and question — keiju@... (Keiju ISHITSUKA)

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

32 messages 1998/01/23
[#1321] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/23

まつもと ゆきひろです

[#1323] Re: [MethodIndex] Bug and question — keiju@... (Keiju ISHITSUKA) 1998/01/23

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

[#1332] Re: [MethodIndex] Bug and question — keiju@... (Keiju ISHITSUKA) 1998/01/27

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

[#1333] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/27

まつもと ゆきひろです

[#1334] Re: [MethodIndex] Bug and question — keiju@... (石塚圭樹 ) 1998/01/27

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

[#1351] Re: [MethodIndex] Bug and question — keiju@... (石塚圭樹 ) 1998/01/29

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

[#1353] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/29

まつもと ゆきひろです

[#1354] Re: [MethodIndex] Bug and question — keiju@... (石塚圭樹 ) 1998/01/29

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

[#1355] Re: [MethodIndex] Bug and question — matz@... (Yukihiro Matsumoto) 1998/01/30

まつもと ゆきひろです

[ruby-dev:1311] Re: [ruby-list:5918] Re: thread

From: matz@... (Yukihiro Matsumoto)
Date: 1998-01-21 09:08:55 UTC
List: ruby-dev #1311
まつもと ゆきひろです

In message "[ruby-dev:1302] Re: [ruby-list:5918] Re: thread"
    on 98/01/20, KIMURA Koichi <kkimura@pure.cpdc.canon.co.jp> writes:

|木村です。
|
|	In: [ruby-dev:1300] 
|
|>>うーん,不幸にもLinuxではちゃんと動作します.ので,
|>>  * 他のアーキテクチャでの動作確認
|>ちなみに mswin32版(ruby1.1b4です)なんですが、こっちも駄目でした。
|>cygwin32版は今確認できません。
|
|実はこの二週間くらいずーっとこれに悩まされてました。元は
|tcltklibがちゃんと動かないというところだったのですが。
|#絶対にVC固有の問題だと思ってMLにはださなかったのでした

むむむ,1.0では大丈夫なんですよね.もしかするとこれかもしれ
ません.全然自信ないですけど.

--- eval.c	1998/01/19 05:08:20	1.1.1.2.2.2
+++ eval.c	1998/01/21 09:02:12
@@ -285,11 +285,11 @@
 #define PUSH_FRAME() {			\
-    struct FRAME *_frame = ALLOCA_N(struct FRAME,1);\
-    _frame->prev = the_frame;		\
-    _frame->file = sourcefile;		\
-    _frame->line = sourceline;		\
-    _frame->iter = the_iter->iter;	\
-    _frame->cbase = the_frame->cbase;	\
-    the_frame = _frame;		\
+    struct FRAME _frame;		\
+    _frame.prev = the_frame;		\
+    _frame.file = sourcefile;		\
+    _frame.line = sourceline;		\
+    _frame.iter = the_iter->iter;	\
+    _frame.cbase = the_frame->cbase;	\
+    the_frame = &_frame;		\
 
-#define POP_FRAME()  the_frame = _frame->prev; }
+#define POP_FRAME()  the_frame = _frame.prev; }
 
@@ -312,25 +312,25 @@
 #define PUSH_BLOCK(v,b) {		\
-    struct BLOCK *_block = ALLOCA_N(struct BLOCK,1);\
-    _block->tag = prot_tag;		\
-    _block->var = v;			\
-    _block->body = b;			\
-    _block->self = self;		\
-    _block->frame = *the_frame;		\
-    _block->class = the_class;		\
-    _block->frame.file = sourcefile;	\
-    _block->frame.line = sourceline;	\
-    _block->scope = the_scope;		\
-    _block->d_vars = the_dyna_vars;	\
-    _block->prev = the_block;		\
-    _block->iter = the_iter->iter;	\
-    the_block = _block;
+    struct BLOCK _block;		\
+    _block.tag = prot_tag;		\
+    _block.var = v;			\
+    _block.body = b;			\
+    _block.self = self;			\
+    _block.frame = *the_frame;		\
+    _block.class = the_class;		\
+    _block.frame.file = sourcefile;	\
+    _block.frame.line = sourceline;	\
+    _block.scope = the_scope;		\
+    _block.d_vars = the_dyna_vars;	\
+    _block.prev = the_block;		\
+    _block.iter = the_iter->iter;	\
+    the_block = &_block;
 
 #define PUSH_BLOCK2(b) {		\
-    struct BLOCK *_block = ALLOCA_N(struct BLOCK,1);\
-    *_block = *b;			\
-    _block->prev = the_block;		\
-    the_block = _block;
+    struct BLOCK _block;		\
+    _block = *b;			\
+    _block.prev = the_block;		\
+    the_block = &_block;
 
 #define POP_BLOCK() 			\
-   the_block = the_block->prev; 	\
+   the_block = _block.prev; 		\
 }
@@ -419,14 +419,2 @@
 
-#ifdef C_ALLOCA
-/* need to protect retval in struct tag from GC. */
-#define tag_retval_dcl VALUE *dd_retval
-#define tag_retval_init VALUE _tag_retval = Qnil;\
-    _tag->dd_retval = &_tag_retval;
-#define tag_retval dd_retval[0]
-#else
-#define tag_retval_dcl VALUE retval
-#define tag_retval_init _tag->retval = Qnil
-#define tag_retval retval
-#endif
-
 static struct tag {
@@ -436,3 +424,3 @@
     ID tag;
-    tag_retval_dcl;
+    VALUE retval;
     ID dst;
@@ -442,11 +430,11 @@
 #define PUSH_TAG(ptag) {		\
-    struct tag *_tag = ALLOCA_N(struct tag,1);\
-    tag_retval_init;			\
-    _tag->frame = the_frame;		\
-    _tag->iter = the_iter;		\
-    _tag->prev = prot_tag;		\
-    _tag->tag_retval = Qnil;		\
-    _tag->tag = ptag;			\
-    _tag->dst = 0;			\
-    prot_tag = _tag;
+    struct tag _tag;			\
+    _tag.retval = Qnil;			\
+    _tag.frame = the_frame;		\
+    _tag.iter = the_iter;		\
+    _tag.prev = prot_tag;		\
+    _tag.retval = Qnil;			\
+    _tag.tag = ptag;			\
+    _tag.dst = 0;			\
+    prot_tag = &_tag;
 
@@ -465,3 +453,3 @@
 #define POP_TAG()			\
-    prot_tag = _tag->prev;		\
+    prot_tag = _tag.prev;		\
 }
@@ -1375,3 +1363,3 @@
     PUSH_FRAME();
-    *the_frame = *_frame->prev;
+    *the_frame = *_frame.prev;
     the_frame->prev = prev;
@@ -1610,3 +1598,3 @@
 		if (state == TAG_RETURN) {
-		    result = prot_tag->tag_retval;
+		    result = prot_tag->retval;
 		}
@@ -2581,3 +2569,3 @@
     PUSH_FRAME();		/* fake frame */
-    *the_frame = *_frame->prev->prev;
+    *the_frame = *_frame.prev->prev;
     rb_longjmp(TAG_RAISE, mesg, arg3);
@@ -2808,3 +2796,3 @@
 	if (state == TAG_RETURN) {
-	    retval = prot_tag->tag_retval;
+	    retval = prot_tag->retval;
 	}
@@ -2981,3 +2969,3 @@
     PUSH_FRAME();		/* fake frame */
-    *the_frame = *_frame->prev->prev;
+    *the_frame = *_frame.prev->prev;
 
@@ -3314,3 +3302,3 @@
 	    else if (state == TAG_RETURN) {
-		result = prot_tag->tag_retval;
+		result = prot_tag->retval;
 		state = 0;
@@ -3657,4 +3645,4 @@
     PUSH_FRAME();
-    the_frame->last_func = _frame->last_func;
-    the_frame->last_class = _frame->last_class;
+    the_frame->last_func = _frame.last_func;
+    the_frame->last_class = _frame.last_class;
     the_frame->argc = 1;
@@ -5743,3 +5731,3 @@
     else if (state == TAG_THROW && prot_tag->tag == prot_tag->dst) {
-	val = prot_tag->tag_retval;
+	val = prot_tag->retval;
 	state = 0;
@@ -5767,3 +5755,3 @@
 	    tt->dst = t;
-	    tt->tag_retval = value;
+	    tt->retval = value;
 	    break;
@@ -5795,3 +5783,3 @@
 	if (tt->tag == PROT_FUNC) {
-	    tt->tag_retval = val;
+	    tt->retval = val;
 	    break;

In This Thread