Windows用のMustangのビルドにおける最適化オプションの定義を調べています。とりあえず手元に展開しているbeta65のソース用Makefileでは、j2se/make/common/Defs-windows.gmkに以下の定義があります。
VisualStudio 2003の場合、32bitモードでは、以下のマクロ変数定義が行われています。
CC_HIGHEST_OPT = -O2 CC_HIGHER_OPT = -O1 CC_LOWER_OPT = -O1 CC_NO_OPT = -Od
バリバリ最適化をするとしたら、以下のように書き換えます。
CC_HIGHEST_OPT = -Ox -Gs -GF -Gy -G7 -arch:SSE
- Oxオプションは、-Ogityb2 -Gsと同じ意味とあります。
- Og:グローバルな最適化を有効にする
- Oi:組み込み関数を有効にする
- Ot:コードのスピードを優先
- Oy:フレームポインタの省略
- Ob2:インライン展開のレベルを2
- Gs:スタックチェックの呼びだしを制御
- GF:同一文字列の削除
- Gy:関数レベルのリンクの有効化
- G7:Pentium4またはAthlon向けの最適化を行う(古いCPUでも動作はする)
- arch:SSE:SSE有効
変更後VisualStudio 2003環境でビルドすると、以下のようなオプションが適用されています。(/Iは削除)
cl.exe /nologo /W3 /WX /Zi /D "IA32" /D "MSC_VER=1310" /MD /D _STATIC_CPPLIB /Ox /Gs /GF /Gy /G7 /arch:SSE /D "PRODUCT" /D "COMPILER1" /D "HOTSPOT_BUILD _VERSION=\"1.6.0-beta-torutk-b65-1\"" /D "HOTSPOT_BUILD_USER=\"toru\"" /D "HOTSP OT_RELEASE_VERSION=\"1.6.0-b65-1\"" /D "WIN32" /D "_WINDOWS" /D "VM_LITTLE_ENDIAN" /D "_JNI_IMPLEMENTATION_" /Fp"vm.pch" /Yu"incls/_precompiled.incl" /c