Harmonyをチェックアウト

今まで、Harmony のソースコードを一度も見てなかったので、チェックアウトしてみた。

$ svn co http://svn.apache.org/repos/asf/harmony/enhanced/trunk harmony-enhanced-trunk
$cd harmony-enhanced-trunk

としても、ソースコードはチェックアウトされないのね。というわけで、

$ ant populate_source
Buildfile: build.xml
...
switch_svn_vm:
[exec] svn: リビジョン引数 'switch' で構文エラーが生じました
BUILD FAILED
/home/taro/svn/harmony-enhanced-trunk/build.xml:533: exec returned: 1

と言われた・・・。何か、ありがちなエラーな気もしたので、LANG=C ant populate_source としたら、チェックアウトしはじめたみたい。それで様子をみよう。

Exception のコード

自分が書いたコードじゃないのだけど、Exceptionをextendして作られた ~Exception クラスがあって、そのコンストラクタで super してないものがあったので、そもそも Exception クラスのコンストラクタではなにしているのだろうと、ちょっと気になった。軽く見てみると、Exception クラスでは、super(~) で Throwable のコンストラクタを呼んでるだけだった。Throwable のコンストラクタでは、fillInStackTrace() を呼んでいる。で、fillInStackTrace() は何かなっと思ったら、ネイティブメソッドだった・・・。cpp のコードを追っていくのも面倒になり、かつ、本来やるべきことから、かなり脱線してきたので、これ以上は追わずにおこう。まぁ、ざっと見た感じ、javadoc にある通り、「Fills in the execution stack trace.」だと思う。というわけで、普通は、new すれば、スタックトレースを作るのね。