- すべてのスーパー・インタフェース:
ClassFileTransformPREVIEW<CodeTransformPREVIEW,
,CodeElementPREVIEW, CodeBuilderPREVIEW> CodeTransformPREVIEW
public sealed interface CodeStackTracker extends CodeTransformPREVIEW
CodeStackTracker
は、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
CodeStackTracker
PREVIEWは、CodeTransform
PREVIEWトラッキング・スタック・コンテンツであり、最大スタック・サイズを計算します。
サンプル使用:
var stackTracker = CodeStackTracker.of();
codeBuilder.transforming(stackTracker, trackedBuilder -> {
trackedBuilder.aload(0);
trackedBuilder.lconst_0();
trackedBuilder.ifThen(...);
...
var stack = stackTracker.stack().get();
int maxStack = stackTracker.maxStackSize().get();
});
- 導入されたバージョン:
- 22
-
ネストされたクラスのサマリー
インタフェースjava.lang.classfile.ClassFileTransformPREVIEWで宣言されたネストされたクラス/インタフェース
ClassFileTransform.ResolvedTransformPREVIEW<E extends ClassFileElementPREVIEW>
-
フィールドのサマリー
インタフェースjava.lang.classfile.CodeTransformPREVIEWで宣言されたフィールド
ACCEPT_ALL
-
メソッドのサマリー
修飾子と型メソッド説明追跡された最大スタック・サイズを返します。static CodeStackTrackerPREVIEW
指定されたスタック・アイテムで初期化されるCodeStackTracker
PREVIEWの新しいインスタンスを作成します。stack()
現在のスタックを表すTypeKindPREVIEWのCollectionを返します。インタフェースjava.lang.classfile.ClassFileTransformPREVIEWで宣言されたメソッド
accept, atEnd, atStart
インタフェースjava.lang.classfile.CodeTransformPREVIEWで宣言されたメソッド
andThen, resolve
-
メソッドの詳細
-
of
static CodeStackTrackerPREVIEW of(TypeKindPREVIEW... initialStack) 指定されたスタック・アイテムで初期化されるCodeStackTracker
PREVIEWの新しいインスタンスを作成します。- パラメータ:
initialStack
- 初期スタック・コンテンツ- 戻り値:
CodeStackTracker
PREVIEWの新しいインスタンス
-
stack
Optional<Collection<TypeKindPREVIEW>> stack()現在のスタックを表すTypeKindPREVIEWのCollectionを返します。 スタック・コンテンツが不明な(xRETURN, ATHROW, GOTO, GOTO_W, LOOKUPSWITCH, TABLESWITCH
命令の直後)の場合、空のOptionalを返します。一時的な不明なスタック・コンテンツをリカバリするには、既知のスタック(分岐先ターゲット)を持つ既存のコードから分岐命令のターゲットとして使用されるLabelPREVIEWをバインドするか、例外ハンドラ(例外ハンドラ・コードの開始)を定義するLabelPREVIEWをバインドします。
- 戻り値:
- 実際のスタック・コンテンツ、または不明な場合は空のOptional
-
maxStackSize
-
CodeStackTracker
を使用できます。