V8 (Google Chrome) でのバグ(switch - caseで間違えてdefaultに飛ぶ)

V8 version 0.4.2.1 (trunk rev.678)で以下のコードで「3!」が出力されるべきなのに、「default!」が出力されます。(Google Chrome 0.3.154.9 でも再現するバグです)

var a = 3;
a += 0x7fffffff;
a -= 0x7fffffff;

switch(a) {
case  0: break;
case  1: break;
case  2: break;
case  3:
	print('3!');
	break;
case  4: break;
case  5: break;
case  6: break;
default:
	print('default!');
}

これはバグですね。

              • -

issue を switch で検索してたら
Issue 137 - v8 - V8 JavaScript Engine - Monorail
あれ、これって同じ問題?

Fixed by Lasse in bleeding_edge revision 679.

・・・・・。あれ、まさかもう直っている? ちょっと新しいバージョンで試してきます...

              • -

最新のbranches/bleeding_edge (rev.682) を落として試してました。
...直ってました。
うう、自分の努力は無意味だったかあ。頑張って最小のコードにしたのになあ。

              • -

ところでこのバグ、自分の作っているものだとかなり致命的な影響があったんですけど、影響のある JavaScript プログラムは少ないのかなあ。

追記 (2008-11-20T22:13:09+09:00)

Google Chrome 0.4.154.23 で修正が反映されているのを確認しました。