[#12340] CGI#out — Shugo Maeda <shugo@...>
前田です。
[#12354] re: higher-resolution Time for Win32 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#12364] Dir::fnmatch? — "Akinori MUSHA" <knu@...>
[ruby-dev:12229] の、 Dir::fnmatch? の追加には特に問題や反対
まつもと ゆきひろです
[#12385] Re: NaN, Infinity (Bug?) — WATANABE Hirofumi <eban@...>
わたなべです。
[#12387] reducing logical operation — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
えぐち@エスアンドイー です。
なかだです。
えぐち@エスアンドイー です。
なかだです。
えぐち@エスアンドイー です。
木山です.
[#12404] fork in threads — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
なひです。
[#12405] at_exit — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#12415] — Koji Arai <JCA02266@...>
新井です。
[#12425] bignum % の結果が負数になることがある — Hisayasu Nakao <h-nakao@...>
最近、ruby-1.6.2を使い出したばかりの中尾です。
わたなべです。
In message <4518-Mon12Mar2001145434+0900-eban@os.rim.or.jp>
まつもと ゆきひろです
In message <984469222.234203.1007.nullmailer@ev.netlab.zetabits.com>
なかだです。
In message <200103131446.XAA22520@sharui.nakada.kanuma.tochigi.jp>
まつもと ゆきひろです
In message <984550885.417146.3670.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
In message <984553493.009507.3747.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
In message <984579430.080967.5569.nullmailer@ev.netlab.zetabits.com>
まつもと ゆきひろです
[#12483] sort! of empty array — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
なひです。
[#12492] compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
[#12513] SOLIBS — "Akinori MUSHA" <knu@...>
configure.in に以下のような修正を加えたいと思っています。
In message <86itlbdv32.wl@archon.local.idaemons.org>
[#12535] シンボリックリンクを含むパスを渡した時の Dir.glob() の動作 — tachino Nobuhiro <tachino@...>
[#12537] re-initialize ARGF — Masaki Suketa <masaki.suketa@...>
助田です。
[#12541] Thread.kill — Masatoshi SEKI <m_seki@...>
[#12570] compile error on ews48 — Koji Arai <JCA02266@...>
新井です。
[#12578] require 'win32api' — Kazuhiro NISHIYAMA <zn@...>
require 'win32api'のエラーメッセージがわかりにくいと
なかだです。
なかだです。
In <200103211407.XAA03408@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In <200103220905.SAA01745@m3.gw.fujitsu.co.jp>
artonです。
[#12582] finalizer problem — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
[#12605] extern inline (ruby.h) ruby-1.6.3 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
[#12621] Marshal bug still remains — "Akinori MUSHA" <knu@...>
Marshal にまだバグが残っています。最新安定版で:
[#12623] [req] Symbol#intern — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#12672] segv on Continuation#call on C_ALLOCA system — Koji Arai <JCA02266@...>
新井です。
[#12674] Was: [rubyist:0454] Re: to_str — Kenichi Komiya <kom@...1.accsnet.ne.jp>
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
なかだです。
なかだです。
新井です。
なかだです。
まつもと ゆきひろです
[#12693] Re: [ruby-cvs] ruby/lib: * ext/extmk.rb.in, lib/mkmf.rb: move C++ rules to the right place. — "Nobuyoshi.Nakada" <nobu.nakada@...>
なかだです。
At Wed, 28 Mar 2001 21:08:14 +0900,
[#12699] cross compile mingw-ruby on cygwin — Koji Arai <JCA02266@...>
新井です。
[ruby-dev:12387] reducing logical operation
なかだです。
せっかく構文木があるんだからと思っても、なかなか最適化は難し
いです。とりあえず論理式の簡略化だけしてみましたが、あんまり違
いはなさそうな気も。
Index: parse.y
===================================================================
RCS file: /home/cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.90
diff -u -2 -p -r1.90 parse.y
--- parse.y 2001/03/06 08:17:16 1.90
+++ parse.y 2001/03/07 02:07:33
@@ -113,4 +113,9 @@ static NODE *new_call();
static NODE *new_fcall();
static NODE *new_super();
+static NODE *new_if _((NODE* cond, NODE* t, NODE* f));
+#define new_unless(c, t, f) new_if(c, f, t)
+static NODE *new_loop _((enum node_type t, NODE *c, NODE *b, int state));
+#define new_while(c, b, p) new_loop(NODE_WHILE, c, b, p)
+#define new_until(c, b, p) new_loop(NODE_UNTIL, c, b, p)
static NODE *gettable();
@@ -349,5 +354,5 @@ stmt : kALIAS fitem {lex_state = EXPR_F
{
value_expr($3);
- $$ = NEW_IF(cond($3), $1, 0);
+ $$ = new_if(cond($3), $1, 0);
fixpos($$, $3);
}
@@ -355,5 +360,5 @@ stmt : kALIAS fitem {lex_state = EXPR_F
{
value_expr($3);
- $$ = NEW_UNLESS(cond($3), $1, 0);
+ $$ = new_unless(cond($3), $1, 0);
fixpos($$, $3);
}
@@ -361,14 +366,9 @@ stmt : kALIAS fitem {lex_state = EXPR_F
{
value_expr($3);
- if ($1) {
- if (nd_type($1) == NODE_BEGIN) {
- $$ = NEW_WHILE(cond($3), $1->nd_body, 0);
- }
- else {
- $$ = NEW_WHILE(cond($3), $1, 1);
- }
+ if ($1 && nd_type($1) == NODE_BEGIN) {
+ $$ = new_while(cond($3), $1->nd_body, 0);
}
else {
- $$ = 0;
+ $$ = new_while(cond($3), $1, 1);
}
}
@@ -376,14 +376,9 @@ stmt : kALIAS fitem {lex_state = EXPR_F
{
value_expr($3);
- if ($1) {
- if (nd_type($1) == NODE_BEGIN) {
- $$ = NEW_UNTIL(cond($3), $1->nd_body, 0);
- }
- else {
- $$ = NEW_UNTIL(cond($3), $1, 1);
- }
+ if ($1 && nd_type($1) == NODE_BEGIN) {
+ $$ = new_until(cond($3), $1->nd_body, 0);
}
else {
- $$ = 0;
+ $$ = new_until(cond($3), $1, 1);
}
}
@@ -912,5 +907,5 @@ arg : lhs '=' arg
{
value_expr($1);
- $$ = NEW_IF(cond($1), $3, $5);
+ $$ = new_if(cond($1), $3, $5);
fixpos($$, $1);
}
@@ -1206,5 +1201,5 @@ primary : literal
{
value_expr($2);
- $$ = NEW_IF(cond($2), $4, $5);
+ $$ = new_if(cond($2), $4, $5);
fixpos($$, $2);
}
@@ -1215,5 +1210,5 @@ primary : literal
{
value_expr($2);
- $$ = NEW_UNLESS(cond($2), $4, $5);
+ $$ = new_unless(cond($2), $4, $5);
fixpos($$, $2);
}
@@ -1223,5 +1218,5 @@ primary : literal
{
value_expr($3);
- $$ = NEW_WHILE(cond($3), $6, 1);
+ $$ = new_while(cond($3), $6, 1);
fixpos($$, $3);
}
@@ -1231,5 +1226,5 @@ primary : literal
{
value_expr($3);
- $$ = NEW_UNTIL(cond($3), $6, 1);
+ $$ = new_until(cond($3), $6, 1);
fixpos($$, $3);
}
@@ -1401,5 +1396,5 @@ if_tail : opt_else
{
value_expr($2);
- $$ = NEW_IF(cond($2), $4, $5);
+ $$ = new_if(cond($2), $4, $5);
fixpos($$, $2);
}
@@ -4580,5 +4575,14 @@ logop(type, left, right)
{
value_expr(left);
- return rb_node_newnode(type, cond1(left, 1), cond1(right, 1), 0);
+ left = cond1(left, 1);
+ right = cond1(right, 1);
+ if (nd_type(left) == NODE_NOT && nd_type(right) == NODE_NOT) {
+ right->nd_2nd = right->nd_body;
+ right->nd_1st = left->nd_body;
+ left->nd_body = right;
+ nd_set_type(right, type ^ (NODE_OR ^ NODE_AND));
+ return left;
+ }
+ return rb_node_newnode(type, left, right, 0);
}
@@ -4629,4 +4633,34 @@ new_super(a)
}
return NEW_SUPER(a);
+}
+
+static NODE*
+new_if(cond, iftrue, iffalse)
+ NODE *cond, *iftrue, *iffalse;
+{
+ if (nd_type(cond) != NODE_NOT) {
+ return NEW_IF(cond, iftrue, iffalse);
+ }
+ cond->nd_cond = cond->nd_body;
+ cond->nd_body = iffalse;
+ cond->nd_else = iftrue;
+ nd_set_type(cond, NODE_IF);
+ return cond;
+}
+
+static NODE*
+new_loop(type, cond, body, state)
+ enum node_type type;
+ NODE *cond, *body;
+ int state;
+{
+ if (nd_type(cond) != NODE_NOT) {
+ return rb_node_newnode(type, cond, body, state);
+ }
+ cond->nd_cond = cond->nd_body;
+ cond->nd_body = body;
+ cond->nd_state = state;
+ nd_set_type(cond, type ^ (NODE_WHILE ^ NODE_UNTIL));
+ return cond;
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦