フォーチュンサモナーズ
«前の日記(2006-02-13) 最新 次の日記(2006-02-20)» 編集

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2006-02-17

_ [yarv] rails を動かしたい このエントリーを含むブックマーク

rails と yarv という Ruby 界の二大キラーが競演できたら素晴らしかろうと、動作の確認をちょっとしてみました。rails の手前の rubygems で落ちました。とりえあず再現する最小のコードをメモっておきます。

./miniruby -e '
> loop do
>   begin
>     {}
>   ensure
>     noop = nil
>   end
> end
> '
DBG> : noop
DBG> : ":0:in `initialize'"
DBG> : ":0:in `initialize'"
-- stack frame ------------
0x2ad4a008 (0000): 00000001
0x2ad4a00c (0001): 00000001
0x2ad4a010 (0002): 00000001 <- lfp <- dfp
-- control frame ----------
c:0004 p:-001 s:0003 b:0003 l:0002 d:0002 CFUNC  i:initialize s:         -  
c:0003 p:-001 s:0002 b:0002 l:0001 d:0001 CFUNC  i:initialize s:         -  
c:0002 p:-001 s:0001 b:0001 l:0000 d:0000 CFUNC  i:initialize s:         -  
c:0001 p:-001 s:0000 b:-001 l:0000 d:0000 ------ i:-        s:         -  
---------------------------
[BUG] NODE_DASGN_CURR, but lv == 1 (line: 6)
ruby 1.9.0 (2006-02-14) [i686-linux]
 
アボートしました
本日のツッコミ(全5件) [ツッコミを入れる]
_ ささだ (2006-02-19 09:23)

うへ。今見つけたので、直しました。ところで、バグ報告はMLに頂けるとさくっと対処できると思うんですが、いかがでしょうか。

_ だて (2006-02-19 14:57)

そうですね。ML に参加したいと思います。と思ったら atdot.net に繋がらないようですので、後ほど。。。

_ だて (2006-02-19 22:27)

む。時刻がまたずれてる。

_ ささだ (2006-02-19 23:04)

なんか学科のネットワークが落ちてるらしく。<br><br>とりあえずパッチです。<br><br>=== compile.c<br>==================================================================<br>--- compile.c (revision 674)<br>+++ compile.c (local)<br>@@ -570,7 +570,6 @@<br> debug_list(LINK_ANCHOR *anchor)<br> {<br> LINK_ELEMENT *list = FIRST_ELEMENT(anchor);<br>- int i = 0;<br> printf("----\n");<br> printf("anch: %p, frst: %p, last: %p\n", &anchor->anchor,<br> anchor->anchor.next, anchor->last);<br>@@ -3109,7 +3108,7 @@<br> idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);<br> if (nd_type(node) == NODE_DASGN_CURR &&<br> lv > 0 &&<br>- iseq->type != ISEQ_TYPE_RESCUE &&<br>+ iseq->type == ISEQ_TYPE_BLOCK &&<br> iseq->compile_data->for_iseq != 1) {<br> <br> dpi(node->nd_vid);<br>@@ -3342,17 +3341,26 @@<br> case NODE_OP_ASGN_AND:<br> case NODE_OP_ASGN_OR:{<br> LABEL *lfin = NEW_LABEL(nd_line(node));<br>-<br>- COMPILE(ret, "NODE_OP_ASGN_AND#nd_head", node->nd_head);<br>+ LABEL *lassign = NEW_LABEL(nd_line(node));<br>+ <br>+ if (nd_type(node) == NODE_OP_ASGN_OR) {<br>+ defined_expr(iseq, ret, node->nd_head, lassign, Qfalse);<br>+ ADD_INSNL(ret, nd_line(node), unless, lassign);<br>+ }<br>+ <br>+ COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_head", node->nd_head);<br> ADD_INSN(ret, nd_line(node), dup);<br>+ <br> if (nd_type(node) == NODE_OP_ASGN_AND) {<br> ADD_INSNL(ret, nd_line(node), unless, lfin);<br> }<br> else {<br> ADD_INSNL(ret, nd_line(node), if, lfin) ;<br> }<br>+<br> ADD_INSN(ret, nd_line(node), pop);<br>- COMPILE(ret, "NODE_OP_ASGN_AND#nd_value", node->nd_value);<br>+ ADD_LABEL(ret, lassign);<br>+ COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_value", node->nd_value);<br> ADD_LABEL(ret, lfin);<br> <br> if (poped) {

_ だて (2006-02-20 10:16)

最小コードではちゃんと動くようになりました。あとでrubygemsでも試してみます。次から報告はMLにしますね。

[]

最近のコメント:

  1. だて (02-23)
  2. ささだ (02-22)
  3. だて (02-20)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).