Previous: , Up: Lispからネイティブコードへのコンパイル   [Contents][Index]


18.2 ネイティブコンパイル関数

このセクションではネイティブコンパイルを制御する変数について述べます。

User Option: native-comp-speed

この変数はネイティブコンパイルの最適化レベルを指定する。値は-1から3の数値であること。値0から3はコンパイラーの対応する最適化レベル-O0-O1、...のコマンドラインオプションと等しい。値-1はネイティブコンパイルの無効化を意味する。この場合には関数およびファイルはバイトコンパイルされる。ただしバイトコード形式でコンパイルされたコードだけを含む*.elnファイルは依然として生成される((declare (speed -1))を使えばこれを関数単位で行うこともできる。declareフォームを参照)。デフォルト値は2。

User Option: native-comp-debug

この変数はネイティブコンパイルが生成するデバッグ情報のレベルを指定する。値は0から3の数値で、以下のような意味をもつ:

0

デバッグ出力なし。これがデフォルト。

1

ネイティブコードでデバッグシンボルを発行する。これはgdbのようなデバッガによるネイティブコードの電話を容易にする。

2

1と同様だが、更に疑似Cコードをダンプする。

3

2と同様、更にGCC中間パス(GCC intermediate passes)とlibgccjitログファイルをダンプする。

User Option: native-comp-verbose

この変数はネイティブコンパイルが発行する一部またはすべてのログメッセージを抑制することにより、ネイティブコンパイルの冗長性(verbosity)を制御する。値が0(デフォルト)なら、ログメッセージはすべて抑制される。1から3の値をセットすることにより、レベルが上述の値であるようなメッセージのロギングを可能にする。値には以下のような解釈がある:

0

ログなし。これがデフォルト。

1

コードの最終的なLIMPLE表現をログ。

2

LAP、最終的なLIMPLE、および追加のパス情報をログ。

3

最大の冗長性。すべてをログ。

User Option: native-comp-async-jobs-number

この変数は同時に開始するネイティブコンパイルのサブプロセスの最大数を決定する。非負の数値であること。デフォルト値0はCPU実行ユニットの半数の使用、1は単一の実行ユニットの使用を意味する。

User Option: native-comp-async-report-warnings-errors

この変数の値が非nilなら、ネイティブコンパイルの非同期サブプロセスからの警告とエラーは、メインのEmacsセッションの*Warnings*という名前のバッファーに報告される。デフォルト値のtはそのバッファーへの表示を意味する。*Warnings*バッファーをポップアップせずに警告をログするには、この変数にsilentをセットすればよい。

非同期ネイティブコンパイルで警告が生成されるのは、必要な機能にたいするrequireが欠落したファイルのコンパイルが原因であることが多い。この機能はメインのEmacsにロードされるかもしれないが、ネイティブコンパイルは常にサブプロセスから初期状態の環境で開始されるので、サブプロセスではロードされないかもしれない。

User Option: native-comp-async-query-on-exit

この変数の値が非nilなら、Emacsはexitに際して実行中のネイティブコンパイルの非同期サブプロセスをすべてkillしてexitするかどうかを尋ねる(対応する.elnファイルへの書き込みを防ぐため)。値がnil (デフォルト)なら、Emacsは問い合わせを行わずにそれらのサブプロセスをkillする。

変数native-comp-eln-load-pathはEmacsが*.elnファイルを探すディレクトリーのリストを保持します(ライブラリー検索を参照)。これは役割りの面では*.el*.elcのファイルを探すために使用されるload-pathと同じです。このリストにあるディレクトリーは非同期のネイティブコンパイルによって生成された*.elnファイルの書き込みにも使用されます。特にEmacsはこのリスト中の最初に書き込み可能なディレクトリーにファイルを書き込むでしょう。したがってこの変数の値を変更することで、ネイティブコンパイルが結果を格納する場所を制御することができます。