Truffleのオプション
任意の言語ランチャを使用して、コマンドラインからオプションをリストできます:
language-launcher --help:expert
また、Truffle言語インプリメンタにのみ関連するオプションの場合は次のとおりです:
language-launcher --help:internal
さらに、Graalコンパイラのオプションは次のようにしてリストできます:
language-launcher --jvm --vm.XX:+JVMCIPrintProperties
Graalコンパイラのオプションのリストは、graalvm_ce_jdk8_optionsを参照してください。
デフォルトの言語ランチャのオプション
--polyglot: 他のすべてのゲスト言語がアクセス可能な状態で実行します。--native: Javaアクセスが制限されたネイティブ・ランチャを使用して実行します(デフォルト)。--jvm: Javaアクセスを使用してJava仮想マシンで実行します。--vm.[option]: ホストVMにオプションを渡します。使用可能なオプションを表示するには、–help:vmを使用します。--log.file=<String>: ゲスト言語のロギングを指定のファイルにリダイレクトします。--log.[logger].level=<String>: 言語のログ・レベルをOFF、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINESTまたはALLに設定します。--help: このヘルプ・メッセージを出力します。--help:vm: ホストVMのオプションを出力します。--version:graalvm: GraalVMのバージョン情報を出力して終了します。--show-version:graalvm: GraalVMバージョン情報を出力して実行を続行します。--help:languages: インストールされているすべての言語のオプションを出力します。--help:tools: インストールされているすべてのツールのオプションを出力します。--help:expert: エキスパートの追加オプションを出力します。--help:internal: 言語の実装およびツールをデバッグするための内部オプションを出力します。
エキスパート・エンジンのオプション
これらは、エンジンを制御するための拡張オプションです。これらは、ユーザー、言語およびツールの実装者に役立ちます。
--engine.PreinitializeContexts=: 特定の言語の言語コンテキストを事前に初期化します。--engine.RelaxStaticObjectSafetyChecks: プロパティ・アクセスで、静的オブジェクト・モデルはシェイプ・チェックを実行せず、安全でないキャストを使用します--engine.TraceStackTraceInterval=[1, inf): 時間間隔のすべてのスレッドのスタック・トレースを出力します。デフォルトは0で、出力を無効にします。--engine.DebugCacheCompileUseLastTier=true|false: trueの場合、第1層のコンパイラのかわりに最後の層が使用されます。デフォルトでは、最後の層のコンパイラが使用されます(デフォルト: true)。--engine.BackgroundCompilation=true|false: バックグラウンド・スレッドで非同期truffleコンパイルを有効にします(デフォルト: true)--engine.Compilation=true|false: Truffleコンパイルを有効または無効にします。--engine.CompilerIdleDelay=<ms>: アイドルのTruffleコンパイラ・スレッドが新しいタスクを待機してから終了する時間をミリ秒で設定します。新しいコンパイル・タスクが発行されると、新しいコンパイラ・スレッドが開始されます。Truffleコンパイラ・スレッドを終了しない場合は、0を選択します。このオプションは、一部のTruffleランタイムでサポートされています。これをサポートしないランタイムでは、オプションは無効です。デフォルト: 10000--engine.CompilerThreads=[1, inf): コンパイラ・スレッドの数を手動で設定します。デフォルトでは、コンパイラ・スレッドの数は、CPUで使用可能なコアの数でスケーリングされます。--engine.EncodedGraphCache=true|false: Truffleコンパイル全体でエンコードされたグラフをキャッシュして、部分評価を高速化します。(デフォルト: true)。--engine.EncodedGraphCachePurgeDelay=<ms>: Truffleコンパイラ・スレッドがアイドル状態になったときに、エンコードされたグラフ・キャッシュが削除されるまでの遅延(ミリ秒単位) (デフォルト: 10000)。--engine.FirstTierBackedgeCounts=true|false: 第1層コンパイルでlook-back-edgeカウンタを発行するかどうか。(デフォルト: true)--engine.FirstTierCompilationThreshold=[1, inf): 通常のコンパイル・ロードで第1層にゲスト言語ルートをコンパイルするために必要な呼出しまたはループ反復の最小数(デフォルト: 400)。--engine.FirstTierMinInvokeThreshold=[1, inf): コール・ターゲットが第1層でコンパイルされるまでの最小コール数(デフォルト: 1)--engine.FirstTierUseEconomy=true|false: 第1層コンパイルでエコノミー構成を使用するかどうか。(デフォルト: true)--engine.ForceFrameLivenessAnalysis: Frame.clear()が使用されていない場合でも、フレーム・クリア・メカニズムを強制的に実行します。--engine.Inlining=true|false: ゲスト言語コール・ターゲットの自動インライン化を有効にします(デフォルト: true)。--engine.InliningExpansionBudget=[1, inf): 言語に依存しないインライン化のベース拡張予算(デフォルト: 12000)。--engine.InliningInliningBudget=[1, inf): 言語に依存しないインライン化のベース・インライン化予算(デフォルト: 12000)--engine.InliningRecursionDepth=[0, inf): 再帰的インライン化の最大深度(デフォルト: 2)。--engine.InvalidationReprofileCount=: 再プロファイリングを許可するために無効化後にコンパイルを遅延します。非推奨: 影響はありません。--engine.LastTierCompilationThreshold=[1, inf): 通常のコンパイル・ロードで、最後の層でゲスト言語ルートをコンパイルするために必要な呼出しまたはループ反復の最小数(デフォルト: 10000)。--engine.MinInvokeThreshold=[1, inf): コール・ターゲットがコンパイルされるまでの最小コール数(デフォルト: 3)。--engine.Mode=latency|throughput: エンジンの実行モードを構成します。使用可能なモードは、「latency」および「throughput」です。デフォルト値は、2つの間のバランスを調整します。--engine.MultiTier=true|false: 複数のTruffleコンパイル層をデフォルトで使用するかどうか。(デフォルト: true)--engine.OSR=true|false: ループの自動スタック上置換を有効にします(デフォルト: true)。--engine.PartialBlockCompilation=true|false: BlockNodeの部分コンパイルを有効にします(デフォルト: true)。--engine.PartialBlockCompilationSize=[1, inf): BlockNodeノードの部分コンパイルのターゲット非簡易Truffleノード・サイズを設定します(デフォルト: 3000)。--engine.PartialBlockMaximumSize=[1, inf): BlockNodeノードの部分コンパイルの最大非簡易Truffleノード・サイズを設定します(デフォルト: 10000)。--engine.ReplaceReprofileCount=: ノード置換後のコンパイルを遅延します。非推奨: 影響はありません。--engine.SingleTierCompilationThreshold=[1, inf): 複数層を使用しない場合にゲスト言語ルートをコンパイルするために必要な呼出しまたはループ反復の最小数(デフォルト: 1000)。--engine.Splitting=true|false: コンパイル・プロファイルの自動複製を有効にします(分割)(デフォルト: true)。--engine.TraceCompilation: コンパイル結果の情報を出力します。--engine.HostCallStackHeadRoom=[1, inf)<B>|<KB>|<MB>|<GB>: ホストへのコール用にスペース・ヘッドルームをスタックします。--engine.IsolateLibrary=<path>: 分離ライブラリへのパス。--engine.IsolateMemoryProtection=true|false: 分離のメモリー保護を有効にします。--engine.IsolateOption.<key>=<value>: VMオプションを分離します。
内部エンジンのオプション
これらは、言語の実装およびツールをデバッグするための内部オプションです。
--engine.DisableCodeSharing: コンテキストが明示的なエンジンで作成されている場合でも、このエンジンのコード共有を強制的に無効にするオプション。このオプションは、テスト目的のみに使用されます。--engine.ForceCodeSharing: バインドされたエンジンを使用してコンテキストが作成された場合でも、このエンジンのコード共有を強制的に有効にするオプション。このオプションは、テスト目的のみに使用されます。--engine.InstrumentExceptionsAreThrown=true|false: インストゥルメントによってスローされた例外を伝播します。(デフォルト: true)--engine.SafepointALot: スレッド・ローカル・アクションを繰り返し送信し、プロセスのセーフポイント間隔に関する統計を収集します。各スレッドのコンテキストが閉じられたときに、イベントおよび間隔の統計を出力します。このオプションは、実行速度を大幅に低下させるため、テストのみを目的としています。--engine.ShowInternalStackFrames: 言語実装に固有の内部フレームをスタック・トレースに表示します。--engine.SpecializationStatistics: Truffle DSLで生成されたノードの特殊化統計を有効にし、終了時に結果を出力します。このフラグを機能させるには、ビルド時に-Atruffle.dsl.GenerateSpecializationStatistics=trueを設定する必要があります。このフラグおよびコンパイラ・オプションを有効にすると、インタプリタのパフォーマンスとフットプリントに大きな影響があります。本番環境で使用しないでください。--engine.StaticObjectStorageStrategy=default|array-based|field-based: 静的オブジェクト・モデルで使用されるストレージ戦略を設定します。有効な値は、[‘default’, ‘array-based’, ‘field-based’]です--engine.TraceCodeSharing: ロガーへのコード共有関連情報の出力を有効にします。このオプションは、言語実装のデバッグをサポートすることを目的としています。--engine.TraceThreadLocalActions: スレッドのローカル・イベントおよび個々のスレッドで処理されるタイミングをトレースします。[engine] [tl]接頭辞が付いたメッセージを出力します。--engine.TriggerUncaughtExceptionHandlerForCancel: 取消し実行例外をUncaughtExceptionHandlerに伝播します。テスト目的のみ。--engine.UseConservativeContextReferences: 保守的なコンテキスト参照を有効にします。これにより、コンテキスト間の無効な共有が可能になります。テスト目的のみ。--engine.UsePreInitializedContext=true|false: 使用可能な場合は、事前初期化済コンテキストを使用します(デフォルト: true)。--engine.DebugCacheCompile=none|compiled|hot|aot|executed: エンジンを永続化する前に、実行されたコール・ターゲットのコンパイルを強制するために使用するポリシー。使用可能な値は次のとおりです:- ‘none’: コンパイルは保持されず、既存のコンパイルは無効になります。
 - ‘compiled’: コンパイルは強制されませんが、終了したコンパイルは保持されます。
 - ‘hot’: (デフォルト) すべての開始されたコンパイルが完了して、保持されます。
 - ‘aot’: すべての開始されたルートおよびAOTコンパイル可能ルートが強制的にコンパイルされ、保持されます。
 - ‘executed’: すべての実行されたルートおよびすべてのAOTコンパイル可能ルートが強制的にコンパイルされます。
 
--engine.DebugCacheLoad: ディスクから読み取るのではなく静的フィールドから格納済エンジンを使用するように、エンジンを準備します。--engine.DebugCachePreinitializeContext=true|false: 新しいコンテキストをサポートし、実行中に使用されたすべての言語で事前初期化します(デフォルト: true)。--engine.DebugCacheStore: エンジンをキャッシング用に準備し、ディスクに書き込むかわりに静的フィールドに格納します。--engine.DebugTraceCache: エンジン・キャッシュ・デバッグ機能のトレースを有効にします。--engine.ArgumentTypeSpeculation=true|false: コール・サイトでの引数タイプを推測します(デフォルト: true)--engine.CompilationExceptionsAreFatal: アプリケーションを終了する致命的な例外として、コンパイル例外を処理します--engine.CompilationExceptionsArePrinted: コンパイル例外の例外スタック・トレースを出力します--engine.CompilationExceptionsAreThrown: コンパイル例外をスローされたランタイム例外として処理します--engine.CompilationFailureAction=Silent|Print|Throw|Diagnose|ExitVM: Truffleコンパイルが失敗したときに実行するアクションを指定します。
有効な値は次のとおりです:
Silent - コンソールに何も出力しません。
Print - 例外をコンソールに出力します。
Throw - 例外をコール元にスローします。
Diagnose - 追加の診断を有効にしてコンパイルを再試行します。
ExitVM - VMプロセスを終了します。--engine.CompilationStatisticDetails: 実行の最後にさらに詳細なTruffleコンパイル統計を出力します。--engine.CompilationStatistics: 実行の最後にTruffleコンパイル統計を出力します。--engine.CompileAOTOnCreate: 作成したコール・ターゲットを最後の層でただちにコンパイルします。有効になっている場合、バックグラウンド・コンパイルを無効にします。--engine.CompileImmediately: Truffleコンパイルをテストするために、ただちにコンパイルします--engine.CompileOnly=<name>,<name>,...: ','で区切ったインクルード(または'~'の接頭辞が付いたエクスクルード)のリストにコンパイルを制限します。デフォルトでは制限はありません。--engine.DynamicCompilationThresholds=true|false: コンパイル・キューのサイズに応じて、コンパイルのしきい値を増減します(デフォルト: true)。--engine.DynamicCompilationThresholdsMaxNormalLoad=[1, inf): 必要な最大コンパイル・キューの負荷。負荷がこの値を超えると、コンパイルしきい値が増加します。負荷はコンパイラ・スレッドの数でスケーリングされます。(デフォルト: 10)--engine.DynamicCompilationThresholdsMinNormalLoad=[1, inf): コンパイル・キューの必要な最小負荷。負荷がこの値を下回ると、コンパイルしきい値は減少します。負荷はコンパイラ・スレッドの数でスケーリングされます(デフォルト: 10)。--engine.DynamicCompilationThresholdsMinScale=[0.0, inf): コンパイルしきい値を減らすことができる最小スケール(デフォルト: 0.1)。--engine.ExcludeAssertions=true|false: Truffleコンパイルからアサーション・コードを除外します(デフォルト: true)--engine.FirstTierInliningPolicy=<policy>: 名前で第1層インライン化ポリシーを明示的に選択します(None、TrivialOnly)。空(デフォルト)の場合、最下位の優先度ポリシー(TrivialOnly)が選択されます。--engine.InlineAcrossTruffleBoundary: Truffle境界を越えてインライン化を有効にします--engine.InlineOnly=<name>,<name>,...: ','で区切ったインクルード(または'~'の接頭辞が付いたエクスクルード)のリストにインライン化されたメソッドを制限します。デフォルトでは制限はありません。--engine.InliningPolicy=<policy>: インライン化ポリシーを名前で明示的に選択します。空(デフォルト)の場合、デフォルトで選択される最も高い優先度。--engine.InliningUseSize: インライン化中にグラフ・サイズをコスト・モデルとして使用します(デフォルト: false)。--engine.InstrumentBoundaries: Truffle境界を計測し、プロファイリング情報を標準出力に出力します。--engine.InstrumentBoundariesPerInlineSite: 異なるインライン化サイトを異なるブランチとみなすことによって、Truffle境界を計測します。--engine.InstrumentBranches: ブランチを計測し、プロファイリング情報を標準出力に出力します。--engine.InstrumentBranchesPerInlineSite: 異なるインライン化サイトを異なるブランチとみなして、ブランチを計測します。--engine.InstrumentFilter=<method>,<method>,...: インストゥルメンテーションを追加するホスト・メソッドのメソッド・フィルタ。--engine.InstrumentationTableSize=[1, inf): 使用可能なインストゥルメンテーション・カウンタの最大数(デフォルト: 10000)。--engine.IterativePartialEscape: Truffleコンパイルで部分エスケープ分析を繰り返し実行します。--engine.MaximumGraalGraphSize=[1, inf): グラフがこのサイズを超えた場合に、部分評価を停止します(デフォルト: 150000)。--engine.MaximumGraalNodeCount=[1, inf): グラフがこの多数のノードを超えた場合に、部分評価を停止します(デフォルト: 40000)。--engine.MaximumInlineNodeCount=[1, inf): グラフがこの多数のノードを超えた場合に、これ以上のtruffleインライン化決定を無視します(デフォルト: 150000)。--engine.MethodExpansionStatistics=true|false|peTier|truffleTier|lowTier|<tier>,<tier>,...: 実行の最後で部分評価中に拡張済Javaメソッドに関する統計を出力します。有効な値は次のとおりです:
true - デフォルト層'truffleTier'のデータを収集します。
false - データを収集しません。
または、カンマで区切られた1つ以上の層(truffleTier、lowTierなど):
peTier - 追加フェーズが適用されていない部分評価後。
truffleTier - 追加フェーズが適用された部分評価後。
lowTier - 低層フェーズが適用された後。--engine.NodeExpansionStatistics=true|false|peTier|truffleTier|lowTier|<tier>,<tier>,...: 実行の最後で部分評価中に拡張済Truffleノードの統計を出力します。有効な値は次のとおりです:
true - デフォルト層'truffleTier'のデータを収集します。
false - データを収集しません。
または、カンマで区切られた1つ以上の層(truffleTier、lowTierなど):
peTier - 追加フェーズが適用されていない部分評価後。
truffleTier - 追加フェーズが適用された部分評価後。
lowTier - 低層フェーズが適用された後。--engine.NodeSourcePositions: truffle部分評価でノード・ソース位置を有効にします。--engine.OSRCompilationThreshold=[1, inf): スタック上置換コンパイルがトリガーされるまでのループ反復回数(デフォルトは100352)。--engine.OSRMaxCompilationReAttempts=[0, inf): コンパイル再試行回数(デフォルトは30)。所定の方法でこの回数を超えるとOSRコンパイルが取り消されます。この数は、許容される脱最適化の数に近い値です。--engine.ParsePEGraphsWithAssumptions=true|false: 部分評価のシード・グラフの解析中に仮定を許可します。エンコードされた永続グラフ・キャッシュengine.EncodedGraphCacheを無効にします(デフォルト: false)。--engine.PerformanceWarningsAreFatal=: パフォーマンス警告を、アプリケーションを終了する致命的な出現として処理します--engine.PrintExpansionHistogram: すべての拡張済Javaメソッドのヒストグラムを出力します。--engine.PriorityQueue=true|false: コンパイル・キューでコンパイル・ジョブの優先度を使用します(デフォルト: true)。--engine.Profiling=true|false: com.oracle.truffle.api.profilesの組込みプロファイルを有効または無効にします。(デフォルト: true)--engine.PropagateLoopCountToLexicalSingleCaller=true|false: 字句の親へのホット度伝播を有効にして、単一コール元を字句の親にします。--engine.PropagateLoopCountToLexicalSingleCallerMaxDepth=[0, inf): 単一コール元チェーンで、字句スコープ親に対してコールおよびループ回数(ホット度プロキシ)を伝播する高さ。--engine.ReturnTypeSpeculation=true|false: コール・サイトでの戻り型を推測します(デフォルト: true)--engine.SplittingAllowForcedSplits=true|false: 強制分割を許可する必要があります(デフォルト: true)--engine.SplittingDumpDecisions: 多相イベントに関するIGV情報にダンプします--engine.SplittingGrowthLimit=[0.0, inf): 分割によって作成されたノード数がこの係数倍のノード数を超えた場合、コール・ターゲットの分割を無効にします(デフォルト: 1.5)。--engine.SplittingMaxCalleeSize=[1, inf): ツリー・サイズがこの制限を超えた場合、コール・ターゲットの分割を無効にします(デフォルト: 100)--engine.SplittingMaxPropagationDepth=[1, inf): この多数のコール・ターゲットの最大値を介して、多相特殊化に関する情報を伝播します(デフォルト: 5)--engine.SplittingTraceEvents: イベントおよび決定の分割の詳細をトレースします。--engine.ThrowOnMaxOSRCompilationReAttemptsReached=true|false: 所定の方法でOSRコンパイル最大試行回数に達したときに、AssertionErrorをスローするかどうか(デフォルトはfalse)。これは、テスト環境でのみtrueに設定する必要があります。--engine.TraceAssumptions: 仮定の無効化時にスタック・トレースを出力します--engine.TraceCompilationAST: 各コンパイル後にAST全体を出力します--engine.TraceCompilationDetails: コンパイル・キューイングの情報を出力します。--engine.TraceCompilationPolymorphism: 各コンパイル後にすべての多相ノードおよび汎用ノードを出力します--engine.TraceDeoptimizeFrame:FrameInstance#getFrame(READ_WRITE|MATERIALIZE)を使用してスタックからフレームを脱最適化するときにスタック・トレースを出力します。--engine.TraceInlining: インライン化決定のための情報を出力します。--engine.TraceInliningDetails: インライン化の詳細な情報を出力します(探索されたコール・ツリー全体など)。--engine.TraceMethodExpansion=true|false|peTier|truffleTier|lowTier|<tier>,<tier>,...: コンパイルごとにすべての拡張済Javaメソッドのツリーを統計とともに出力します。有効な値は次のとおりです:
true - デフォルト層'truffleTier'のデータを収集します。
false - データを収集しません。
または、カンマで区切られた1つ以上の層(truffleTier、lowTierなど):
peTier - 追加フェーズが適用されていない部分評価後。
truffleTier - 追加フェーズが適用された部分評価後。
lowTier - 低層フェーズが適用された後。--engine.TraceNodeExpansion=true|false|peTier|truffleTier|lowTier|<tier>,<tier>,...: コンパイルごとに、すべての拡張済Truffleノードのツリーを統計とともに出力します。有効な値は次のとおりです:
true - デフォルト層'truffleTier'のデータを収集します。
false - データを収集しません。
または、カンマで区切られた1つ以上の層(truffleTier、lowTierなど):
peTier - 追加フェーズが適用されていない部分評価後。
truffleTier - 追加フェーズが適用された部分評価後。
lowTier - 低層フェーズが適用された後。--engine.TracePerformanceWarnings=none|all|<perfWarning>,<perfWarning>,...: 潜在的なパフォーマンスの問題を出力します。パフォーマンス警告は、call、instanceof、store、frame_merge、trivialです。--engine.TraceSplitting: 分割決定のための情報を出力します。--engine.TraceSplittingSummary: 分割実装のデバッグに使用されます。分割サマリーをシャットダウン時に標準出力に直接出力します--engine.TraceStackTraceLimit=[1, inf): TraceTruffleTransferToInterpreter、TraceTruffleAssumptionsおよびTraceDeoptimizeFrameで出力されるスタック・トレース要素の数(デフォルト: 20)。--engine.TraceTransferToInterpreter: インタプリタへの転送時にスタック・トレースを出力します。--engine.TraversingCompilationQueue=true|false: トラバース・コンパイル・キューを使用します。(デフォルト: true)--engine.TraversingQueueFirstTierBonus=[0.0, inf): 第1層コンパイルに付与する必要がある優先度の程度を制御します(デフォルトは15.0)。--engine.TraversingQueueFirstTierPriority: トラバース・キューでは、第1階層のコンパイルを優先します。--engine.TraversingQueueWeightingBothTiers=true|false: トラバース・キューは、両方の層の優先度としてレートを使用します。(デフォルト: true)--engine.TreatPerformanceWarningsAsErrors=none|all|<perfWarning>,<perfWarning>,...: パフォーマンス警告をエラーとして処理します。エラーの処理は、CompilationFailureActionオプションの値によって異なります。パフォーマンス警告は、call、instanceof、store、frame_merge、trivialです。