概要 - コンパイラ最適化状況(Visual LISP IDE)

コンパイラは、常に最適化の一貫性をチェックします。あるセキュリティ規則に反する最適化オプションを指定すると、警告メッセージが表示されます。

注: Visual LISP IDE は Windows でのみ使用可能です。

次に、セキュリティ規則を示します。

[リンク]

コンパイラは、次の状況を検出したときのみ AutoLISP 関数呼び出しを直接リンクします。

  • 関数が 1 度だけ定義されている、または AutoLISP の定義済み関数である、またはユーザが defun 関数で再定義していない。
  • 関数名が、別の関数のパラメータ リストに現れない。
  • 関数が、プロジェクト内のいずれの場所でも割り当てられていない。
[ドロップ]

コンパイラは、一致するすべての関数呼び出しを関数定義に直接リンクできるときだけ関数名のドロップを試みます。コンパイラは、プログラムがシンボル名で関数を呼び出す場合は、関数定義のシンボルをドロップしません。関数は、次の場合にシンボルで呼び出されます。

  • シンボルが、vl-acad-defun 宣言の中に現れている。
  • 関数が ACTION_TILE アクション文字列から呼び出されている。
  • 関数のシンボルが、プロジェクト内のどこかで applymapcar、または eval 関数のシングル クォーテーション付きの引数になっています。
注: 最上位レベルの式から呼び出された関数の場合、[ドロップ]宣言は警告メッセージなしで無視されます。
[ローカル化]

コンパイラは、次のいずれかの状況に当てはまる場合は、defunlambda、および foreach 式の結合リスト内の変数をローカル化しません。

  • 変数が、外側のトップ レベルの式内の変数への非ローカル参照(または割り当て)を持たない。
  • 変数が、名前で関数として呼び出されている。
  • 変数のシンボルがトップ レベルの読み込み - 評価ループ内のどこかで関数呼び出しとして現れる。

最適化が常にキャンセルされたり警告メッセージが表示される状況以外に、不正なコードが生成されたり、または生成されない可能性がある状況が他にもあります。プロジェクトをコンパイルするときは、プロジェクトに対して[セーフ最適化]オプションを使用して、これらの状況が起きないようにします。[セーフ最適化]がオフのときは、コンパイラがこれらの状況が検出したときに警告メッセージを表示します。