Mysaifu JVM is a free Java virtual machine for Windows Mobile.
- クラスファイルベリファイアを一部実装した
- ユーザインタフェースを一部変更した
- その他バグ修正を実施した
java.awt
- FileDialog内でメモリがリークしていた点を修正した。
- FileDialog.setFile(String)で設定した値を、OPENFILENAME構造体のlpstrFileに設定するようにした。
- gsgetfile.dllがロードできる場合は、GetOpenFileName()の代わりにgsGetOpenFileName()を、GetSaveFileName()の代わりにgsGetSaveFileName()をそれぞれ呼び出すようにした。
java.lang.reflectパッケージ
- メソッドを呼び出す際やフィールドの値を取得する際に、クラスが初期化されない場合があった。確実に初期化されるように修正した。
JVM本体
- クラスフォーマットのチェック(http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88597 に定義されたベリファイのパス1)を実施するようにした。
- クラスファイルのフォーマットがおかしい場合(http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88597 に定義されたベリファイのパス1が失敗した場合)ClassFormatErrorをthrowするようにした。
- クラスファイルのバージョンをチェックするようにした。バージョンは45.3以上をサポートする。
- バイトコードベリファイヤを一部実装した。
- ClassFile構造体の field_info に割り当てるメモリ量を削減した。(1つのフィールドにつき4バイト減らした)
- ClassFile構造体の method_info に割り当てるメモリ量を削減した。
- ロードしたクラスファイル内に記述されたクラス名と、ロード開始時に指定された名前とを比較し、異なっている場合はNoClassDefFoundErrorをthrowするようにした。
- 以下の起動オプションを追加した。
-verify (ベリファイする)
-noverify(ベリファイしない)
- クラスロード時にClassCircularityErrorに関するチェックを実行するようにした。
- クラスロード時に、ロード制約のチェックを行うようにした。
- Win32例外が発生した際にJVM全体を終了させていたが、該当スレッドのみを終了させるように変更した。また、ダイアログを表示してユーザに追加情報の入力を依頼し、情報をファイルに保存するようにした。
- main()メソッドが例外を投げた場合、コンソールを自動的に開いてユーザに通知するようにした。
- 初期画面のデザインを変更した。
- CLASSPATHの指定を楽にするため、ファイル選択ダイアログとフォルダ選択ダイアログを表示するようにした。
- コマンドラインパラメータをファイル(拡張子.mysaifujvm)に保存できるようにした。これに関連して、拡張子 .mysaifujvm を jvm.exe に関連付けた。
- 初期画面のコンボボックス内に表示される一覧を、最後に実行した日付が新しい順にソートして表示するようにした。
- 稀に Heap error=エラーコード というメッセージが表示され、JVMがクラッシュすることがあった。
- Javaプログラムへの引数が正しく解釈できていなかった点を修正した。