ネイティブメソッドをコンパイルするときにコンパイラが行うことがある最適化によって、VM を実行できないことがあります。VM はスレッドのスタックにある関数のスタックフレーム検査機能に依存します。このため、ネイティブ関数のコードは、非リーフ関数に対するシステム呼び出し規則の規定にしたがってつねにスタックフレームを作成する必要があります。またフレームポインタレジスタは、つねに有効なスタックフレームを指す必要があります。
Intel (IA) プラットフォーム上で Sun WorkshopTM C コンパイラを使用すると、最適化レベルの -xO4 および -xO5 で上記の条件に違反するコードが生成されることがあります。このため、-xO3 より高い最適化レベルは使用しないでください。
SPARC プラットフォーム上では、すべての最適化レベルで問題はありません。別のコンパイラを使用する場合は、そのコンパイラのドキュメントで上記の条件を満たすコードが生成されるかどうか確認してください。
上記の制限事項に違反しているネイティブメソッドは、VM を異常終了させることがあります。