インタフェースCodeBuilder
- すべてのスーパー・インタフェース:
ClassFileBuilder<CodeElement, CodeBuilder>,Consumer<CodeElement>
- 既知のすべてのサブインタフェース:
CodeBuilder.BlockCodeBuilder
Code属性(メソッド本体)のビルダー。 MethodBuilder.withCode(java.util.function.Consumer<? super java.lang.classfile.CodeBuilder>)はコード・ビルダーを取得するための基本的な方法です。ClassBuilder.withMethodBody(java.lang.classfile.constantpool.Utf8Entry, java.lang.classfile.constantpool.Utf8Entry, int, java.util.function.Consumer<? super java.lang.classfile.CodeBuilder>)はショートカットです。 また、コード・ブロックを処理するblock(java.util.function.Consumer<java.lang.classfile.CodeBuilder.BlockCodeBuilder>)から導出されたコード・ビルダーと、既存のハンドラで変換を実行するtransforming(java.lang.classfile.CodeTransform, java.util.function.Consumer<java.lang.classfile.CodeBuilder>)もあり、両方とも最初にコード・ビルダーを使用できる必要があります。
classファイル形式の構造体に対するビルダーの使用に関する一般的なガイダンスおよび注意事項は、ClassFileBuilderを参照してください。 他のビルダーとは異なり、コード・ビルダーのメンバー要素の順序は重要です: 結果のバイトコードに影響します。 「多数のクラス・ファイルAPI」オプションはコード・ビルダーに影響: ClassFile.DeadCodeOptionおよびClassFile.ShortJumpsOptionは結果のバイトコードに影響し、ClassFile.DeadLabelsOption、ClassFile.DebugElementsOption、ClassFile.LineNumbersOption、ClassFile.StackMapsOptionおよびClassFile.AttributesProcessingOptionは、ビルドされたCode属性の結果の属性に影響し、コード・ビルダーに送信される一部の要素は無視されます。
インストラクション・ファクトリ
CodeBuilderは、必要なオペランドを使用して、ニーモニックによって命令(「JVMS 6.5の手順」を参照してください)を作成する便利なメソッドを提供します。
- オペランドを
aload_<n>などのopcodeにエンコードする命令は、そのファクトリをaloadのような汎用バージョンと共有します。iconst_1などの一部の定数命令には汎用バージョンがないため、独自のファクトリがあります。 ldc2_wやwideなどのワイド・オペランドを受け入れる命令は、そのファクトリをldc(java.lang.constant.ConstantDesc)のような通常のバージョンと共有します。goto_wには、「ショート・ジャンプ」を回避するための独自のファクトリがあります。goto,instanceof,newおよびreturn命令のファクトリの名前は、それぞれgoto_、instanceOf、new_およびreturn_です。これは、Javaプログラミング言語のキーワードと競合するためです。jsr、jsr_w、retおよびwide retは、メジャー・バージョン51以上のクラス・ファイルでは使用できません。 (JVMS 4.9.1)は、引き続きClassFileBuilder.with(E)を介して提供できます。
- 導入されたバージョン:
- 24
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型インタフェース説明static interfaceコードのブロック用のビルダー。static interfacecatchブロックを追加するビルダー。 -
メソッドのサマリー
修飾子と型メソッド説明default CodeBuilderaaload()reference配列からロードする命令を生成します。default CodeBuilderaastore()reference配列に格納する命令を生成します。default CodeBuildernullオブジェクトreferenceをオペランド・スタックにプッシュする命令を生成します。intallocateLocal(TypeKind typeKind) 新しいローカル変数のローカル変数スロットを返します。default CodeBuilderaload(int slot) ローカル変数からreferenceをロードする命令を生成します。default CodeBuilderanewarray(ClassEntry classEntry) referenceの新しい配列を作成する命令を生成します。default CodeBuilderreferenceの新しい配列を作成する命令を生成します。default CodeBuilderareturn()このメソッドからreferenceを返す命令を生成します。default CodeBuilder配列の長さを取得する命令を生成します。default CodeBuilder配列からロードする命令を生成します。default CodeBuilderarrayStore(TypeKind tk) 配列に格納する命令を生成します。default CodeBuilderastore(int slot) referenceをローカル変数に格納する命令を生成します。default CodeBuilderathrow()例外またはエラーをスローする命令を生成します。default CodeBuilderbaload()default CodeBuilderbastore()default CodeBuilderbipush(int b) default CodeBuilderblock(Consumer<CodeBuilder.BlockCodeBuilder> handler) 構築中のメソッドに字句ブロックを追加します。default CodeBuilderブランチ命令を生成します。default CodeBuildercaload()char配列からロードする命令を生成します。default CodeBuildercastore()char配列に格納する命令を生成します。default CodeBuildercharacterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags) 文字範囲エントリを宣言します。default CodeBuildercheckcast(ClassEntry type) オブジェクトが指定の型かどうかをチェックする命令を生成し、チェックが失敗した場合はClassCastExceptionをスローします。default CodeBuilderオブジェクトが指定の型かどうかをチェックする命令を生成し、チェックが失敗した場合はClassCastExceptionをスローします。default CodeBuilderconversion(TypeKind fromType, TypeKind toType) Generatesinstruction(s):fromTypeをtoTypeに変換します。default CodeBuilderd2f()default CodeBuilderd2i()default CodeBuilderd2l()default CodeBuilderdadd()2つのdoublesを追加する命令を生成します。default CodeBuilderdaload()double配列からロードする命令を生成します。default CodeBuilderdastore()double配列に格納する命令を生成します。default CodeBuilderdcmpg()default CodeBuilderdcmpl()default CodeBuilderdconst_0()double定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderdconst_1()double定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderddiv()doublesを分割する命令を生成します。default CodeBuilderdload(int slot) ローカル変数からdoubleをロードする命令を生成します。default CodeBuilderdmul()doublesを乗算する命令を生成します。default CodeBuilderdneg()doubleを否定する命令を生成します。default CodeBuilderdrem()double剰余を計算する命令を生成します。default CodeBuilderdreturn()このメソッドからdoubleを返す命令を生成します。default CodeBuilderdstore(int slot) doubleをローカル変数に格納する命令を生成します。default CodeBuilderdsub()doublesを減算する命令を生成します。default CodeBuilderdup()上部のオペランド・スタック値を複製する命令を生成します。default CodeBuilderdup_x1()上部のオペランド・スタック値を複製し、下に2つの値を挿入する命令を生成します。default CodeBuilderdup_x2()上部のオペランド・スタック値を複製し、2つまたは3つの値を下に挿入する命令を生成します。default CodeBuilderdup2()上位1つまたは2つのオペランド・スタック値を複製する命令を生成します。default CodeBuilderdup2_x1()上位1つまたは2つのオペランド・スタック値を複製し、2つまたは3つの値を下に挿入する命令を生成します。default CodeBuilderdup2_x2()上位1つまたは2つのオペランド・スタック値を複製し、2つ、3つ、または4つの値を下に挿入する命令を生成します。endLabel()現在のブロックの末尾に関連付けられたラベルを返します。default CodeBuilderexceptionCatch(Label start, Label end, Label handler, ClassEntry catchType) 例外表エントリを宣言します。default CodeBuilderexceptionCatch(Label start, Label end, Label handler, ClassDesc catchType) 例外表エントリを宣言します。default CodeBuilderexceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType) 例外表エントリを宣言します。default CodeBuilderexceptionCatchAll(Label start, Label end, Label handler) すべての例外およびエラーを捕捉する例外表エントリを宣言します。default CodeBuilderf2d()default CodeBuilderf2i()default CodeBuilderf2l()default CodeBuilderfadd()2つのfloatsを追加する命令を生成します。default CodeBuilderfaload()float配列からロードする命令を生成します。default CodeBuilderfastore()float配列に格納する命令を生成します。default CodeBuilderfcmpg()default CodeBuilderfcmpl()default CodeBuilderfconst_0()float定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderfconst_1()float定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderfconst_2()float定数2をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderfdiv()floatsを分割する命令を生成します。default CodeBuilderfieldAccess(Opcode opcode, FieldRefEntry ref) フィールドにアクセスするための指示を生成します。default CodeBuilderfieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type) フィールドにアクセスするための指示を生成します。default CodeBuilderfload(int slot) ローカル変数からfloatをロードする命令を生成します。default CodeBuilderfmul()floatsを乗算する命令を生成します。default CodeBuilderfneg()floatを否定する命令を生成します。default CodeBuilderfrem()floats剰余を計算する命令を生成します。default CodeBuilderfreturn()このメソッドからfloatを返す命令を生成します。default CodeBuilderfstore(int slot) floatをローカル変数に格納する命令を生成します。default CodeBuilderfsub()floatsを減算する命令を生成します。default CodeBuildergetfield(FieldRefEntry ref) オブジェクトからフィールドをフェッチする命令を生成します。default CodeBuilderオブジェクトからフィールドをフェッチする命令を生成します。default CodeBuildergetstatic(FieldRefEntry ref) クラスまたはインタフェースから静的フィールドを取得する命令を生成します。default CodeBuilderクラスまたはインタフェースから静的フィールドを取得する命令を生成します。default CodeBuilder常に分岐する命令を生成します。default CodeBuilder常にワイド・インデックスで分岐する命令を生成します。default CodeBuilderi2b()default CodeBuilderi2c()default CodeBuilderi2d()default CodeBuilderi2f()default CodeBuilderi2l()default CodeBuilderi2s()default CodeBuilderiadd()2つのintsを追加する命令を生成します。default CodeBuilderiaload()int配列からロードする命令を生成します。default CodeBuilderiand()default CodeBuilderiastore()int配列に格納する命令を生成します。default CodeBuildericonst_0()int定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuildericonst_1()int定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuildericonst_2()int定数2をオペランド・スタックにプッシュする命令を生成します。default CodeBuildericonst_3()int定数3をオペランド・スタックにプッシュする命令を生成します。default CodeBuildericonst_4()int定数4をオペランド・スタックにプッシュする命令を生成します。default CodeBuildericonst_5()int定数5をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderint定数 -1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderidiv()intsを分割する命令を生成します。default CodeBuilderreference比較operand1 == operand2が成功した場合に分岐する命令を生成します。default CodeBuilderreference比較operand1 != operand2が成功した場合に分岐する命令を生成します。default CodeBuilderint比較operand1 == operand2が成功した場合に分岐する命令を生成します。default CodeBuilderint比較operand1 >= operand2が成功した場合に分岐する命令を生成します。default CodeBuilderint比較operand1 > operand2が成功した場合に分岐する命令を生成します。default CodeBuilderint比較operand1 <= operand2が成功した場合に分岐する命令を生成します。default CodeBuilderint比較operand1 < operand2が成功した場合に分岐する命令を生成します。default CodeBuilderint比較operand1 != operand2が成功した場合に分岐する命令を生成します。default CodeBuilderintと0(ゼロ)の== 0の比較が成功した場合、分岐する命令を生成します。default CodeBuilderintと0(ゼロ)の>= 0の比較が成功した場合、分岐する命令を生成します。default CodeBuilderintと0(ゼロ)の> 0の比較が成功した場合、分岐する命令を生成します。default CodeBuilderintと0(ゼロ)の<= 0の比較が成功した場合、分岐する命令を生成します。default CodeBuilderintと0(ゼロ)の< 0の比較が成功した場合、分岐する命令を生成します。default CodeBuilderintと0(ゼロ)の!= 0の比較が成功した場合、分岐する命令を生成します。default CodeBuilderreferenceがnullでない場合に分岐する命令を生成します。default CodeBuilderreferenceがnullの場合、分岐する命令を生成します。default CodeBuilderifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) 指定されたopcodeに従って、オペランド・スタックの上にあるthevalue(s)に条件付き"if-then"ブロックを追加します。default CodeBuilderifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) オペランド・スタック上部のboolean値に条件付き"if-then"ブロックを追加します。default CodeBuilderifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) 指定されたopcodeに従って、オペランド・スタックの上にあるthevalue(s)に条件付き"if-then-else"ブロックを追加します。default CodeBuilderifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) オペランド・スタック上部のboolean値に条件付き"if-then-else"ブロックを追加します。default CodeBuilderiinc(int slot, int val) intローカル変数を定数で増分する命令を生成します。default CodeBuilderiload(int slot) ローカル変数からintをロードする命令を生成します。default CodeBuilderimul()intsを乗算する命令を生成します。default CodeBuilderineg()intを否定する命令を生成します。default CodeBuilderinstanceOf(ClassEntry target) オブジェクトが指定された型であるかどうかを判断する命令を生成し、オペランド・スタックにbooleanの結果を生成します。default CodeBuilderinstanceOf(ClassDesc target) オブジェクトが指定された型であるかどうかを判断する命令を生成し、オペランド・スタックにbooleanの結果を生成します。default CodeBuilderinvoke(Opcode opcode, MemberRefEntry ref) メソッドを呼び出す命令を生成します。default CodeBuilderinvoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface) メソッドを呼び出す命令を生成します。default CodeBuilder動的に計算されたコール・サイトを起動する命令を生成します。default CodeBuilder動的に計算されたコール・サイトを起動する命令を生成します。default CodeBuilderインタフェース・メソッドを起動する命令を生成します。default CodeBuilderinvokeinterface(ClassDesc owner, String name, MethodTypeDesc type) インタフェース・メソッドを起動する命令を生成します。default CodeBuilderインタフェースでインスタンス・メソッドを呼び出す命令を生成します。現在のクラスのメソッドとそのスーパータイプを直接呼び出します。default CodeBuilderクラス内のインスタンス・メソッドを起動する命令を生成します。現在のクラスのインスタンス初期化メソッドおよびメソッドとそのスーパータイプを直接呼び出します。default CodeBuilderinvokespecial(ClassDesc owner, String name, MethodTypeDesc type) クラス内のインスタンス・メソッドを起動する命令を生成します。現在のクラスのインスタンス初期化メソッドおよびメソッドとそのスーパータイプを直接呼び出します。default CodeBuilderinvokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) インスタンス・メソッドを起動する命令を生成します。インスタンス初期化メソッドと、現在のクラスとそのスーパータイプのメソッドを直接呼び出します。default CodeBuilderインタフェースのクラス(static)メソッドを起動する命令を生成します。default CodeBuilderクラスの(static)メソッドを呼び出す命令を生成します。default CodeBuilderinvokestatic(ClassDesc owner, String name, MethodTypeDesc type) クラスの(static)メソッドを呼び出す命令を生成します。default CodeBuilderinvokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) クラス(static)メソッドを起動する命令を生成します。default CodeBuilderインスタンス・メソッドを起動する命令を生成します。クラスに基づいてディスパッチします。default CodeBuilderinvokevirtual(ClassDesc owner, String name, MethodTypeDesc type) インスタンス・メソッドを起動する命令を生成します。クラスに基づいてディスパッチします。default CodeBuilderior()default CodeBuilderirem()ints剰余を計算する命令を生成します。default CodeBuilderireturn()このメソッドからintを返す命令を生成します。default CodeBuilderishl()intを左にシフトする命令を生成します。default CodeBuilderishr()intを右にシフトする命令を生成します。default CodeBuilderistore(int slot) intをローカル変数に格納する命令を生成します。default CodeBuilderisub()intsを減算する命令を生成します。default CodeBuilderiushr()int権限を論理シフトする命令を生成します。default CodeBuilderixor()intsのビット単位XORを計算する命令を生成します。default CodeBuilderl2d()default CodeBuilderl2f()default CodeBuilderl2i()default CodeBuilderlabelBinding(Label label) ラベルを現在の位置にバインドします。default CodeBuilderladd()2つのlongsを追加する命令を生成します。default CodeBuilderlaload()long配列からロードする命令を生成します。default CodeBuilderland()longsのビット単位ANDを計算する命令を生成します。default CodeBuilderlastore()long配列に格納する命令を生成します。default CodeBuilderlcmp()longsを比較する命令を生成します。default CodeBuilderlconst_0()long定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderlconst_1()long定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderldc(LoadableConstantEntry entry) 実行時定数プールからオペランド・スタックに項目をプッシュする命令を生成します。default CodeBuilderldc(ConstantDesc value) 実行時定数プールからオペランド・スタックに項目をプッシュする命令を生成します。default CodeBuilderldiv()longsを分割する命令を生成します。default CodeBuilderlineNumber(int line) 現在の位置から始まるソース行番号を宣言します。default CodeBuilderlload(int slot) ローカル変数からlongをロードする命令を生成します。default CodeBuilderlmul()longsを乗算する命令を生成します。default CodeBuilderlneg()longを否定する命令を生成します。default CodeBuilderloadConstant(double value) 定数double値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderloadConstant(float value) 定数float値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderloadConstant(int value) 定数int値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderloadConstant(long value) 定数long値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderloadConstant(ConstantDesc value) 定数をオペランド・スタックにプッシュする命令を生成します。default CodeBuilderローカル変数から値をロードする命令を生成します。default CodeBuilderlocalVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope) ローカル変数エントリを宣言します。default CodeBuilderlocalVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope) ローカル変数エントリを宣言します。default CodeBuilderlocalVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope) ローカル変数タイプ・エントリを宣言します。default CodeBuilderlocalVariableType(int slot, String name, Signature signature, Label startScope, Label endScope) ローカル変数タイプ・エントリを宣言します。default CodeBuilderlookupswitch(Label defaultTarget, List<SwitchCase> cases) キーの一致およびジャンプによってジャンプ表にアクセスする命令を生成します。default CodeBuilderlor()longsのビット単位ORを計算する命令を生成します。default CodeBuilderlrem()longs剰余を計算する命令を生成します。default CodeBuilderlreturn()このメソッドからlongを返す命令を生成します。default CodeBuilderlshl()longを左にシフトする命令を生成します。default CodeBuilderlshr()longを右にシフトする命令を生成します。default CodeBuilderlstore(int slot) longをローカル変数に格納する命令を生成します。default CodeBuilderlsub()longsを減算する命令を生成します。default CodeBuilderlushr()longを論理的にシフトする命令を生成します。default CodeBuilderlxor()longsのビット単位XORを計算する命令を生成します。default CodeBuilderオブジェクトのモニターを入力する命令を生成します。default CodeBuilderオブジェクトのモニターを終了する命令を生成します。default CodeBuildermultianewarray(ClassEntry array, int dims) 新しい多次元配列を作成する命令を生成します。default CodeBuildermultianewarray(ClassDesc array, int dims) 新しい多次元配列を作成する命令を生成します。default CodeBuildernew_(ClassEntry clazz) 新しいオブジェクトを作成する命令を生成します。default CodeBuilder新しいオブジェクトを作成する命令を生成します。default CodeBuilderプリミティブ型の新しい配列を作成する命令を生成します。default Label現在の位置にバインドされた新しいラベルを作成します。newLabel()バインドされていない新しいラベルを返します。default CodeBuildernop()何もしない命令を生成します。intparameterSlot(int paramNo) 指定されたパラメータに関連付けられたローカル変数スロットを返します。default CodeBuilderpop()上部のオペランド・スタック値をポップする命令を生成します。default CodeBuilderpop2()上位1つまたは2つのオペランド・スタック値をポップする命令を生成します。default CodeBuilderputfield(FieldRefEntry ref) オブジェクトのフィールドを設定する命令を生成します。default CodeBuilderオブジェクトのフィールドを設定する命令を生成します。default CodeBuilderputstatic(FieldRefEntry ref) クラスの静的フィールドを設定する命令を生成します。default CodeBuilderクラスの静的フィールドを設定する命令を生成します。intレシーバに関連付けられたローカル変数スロットを返します。default CodeBuilderreturn_()このメソッドからvoidを返す命令を生成します。default CodeBuilder戻り命令を生成します。default CodeBuildersaload()short配列からロードする命令を生成します。default CodeBuildersastore()short配列に格納する命令を生成します。default CodeBuildersipush(int s) 現在のブロックの先頭に関連付けられたラベルを返します。default CodeBuilderstoreLocal(TypeKind tk, int slot) ローカル変数に値を格納する命令を生成します。default CodeBuilderswap()上位2つのオペランド・スタック値をスワップする命令を生成します。default CodeBuildertableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases) インデックスでジャンプ表にアクセスし、ジャンプする命令を生成します。default CodeBuildertableswitch(Label defaultTarget, List<SwitchCase> cases) インデックスでジャンプ表にアクセスし、ジャンプする命令を生成します。default CodeBuildertransforming(CodeTransform transform, Consumer<CodeBuilder> handler) ハンドラによって構築されたコードに変換を適用し、結果をこのビルダーに指示します。default CodeBuildertrying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler) 1つのtryブロックと0個以上のcatchブロックで構成される"try-catch"ブロックを追加します。インタフェースjava.lang.classfile.ClassFileBuilderで宣言されたメソッド
accept, constantPool, transform, with
-
メソッドの詳細
-
newLabel
Label newLabel()バインドされていない新しいラベルを返します。 ラベルはlabelBinding(java.lang.classfile.Label)でバインドできます。- 戻り値:
- 新鮮な無限ラベル
-
startLabel
Label startLabel()現在のブロックの先頭に関連付けられたラベルを返します。block(Consumer)またはifThenElse(Consumer, Consumer)によって提供されるものなど、このビルダーが"block"ビルダーでない場合、現在のブロックはメソッド本文全体になります。- 戻り値:
- 現在のブロックの先頭に関連付けられたラベル
-
endLabel
Label endLabel()現在のブロックの末尾に関連付けられたラベルを返します。block(Consumer)またはifThenElse(Consumer, Consumer)によって提供されるものなど、このビルダーが"block"ビルダーでない場合、現在のブロックはメソッド本文全体になります。- 戻り値:
- 現在のブロックの末尾に関連付けられたラベル
-
receiverSlot
int receiverSlot()レシーバに関連付けられたローカル変数スロットを返します。- 戻り値:
- 受信側に関連付けられたローカル変数スロット
- スロー:
IllegalStateException- これがstaticメソッドの場合
-
parameterSlot
-
allocateLocal
int allocateLocal(TypeKind typeKind) 新しいローカル変数のローカル変数スロットを返します。 このメソッドでは、どのスロットが使用中で、どのスロットが使用されていないかを判断するために合理的な努力をします。 メソッドを変換すると、新しいローカルは元のメソッドのmaxLocalsから始まります。 直接構築されるメソッドの場合、新しいローカルは最後のパラメータ・スロットのあとに始まります。現在のコード・ビルダーが
CodeBuilder.BlockCodeBuilderの場合、ブロックの最後に、ローカルはブロックの先頭にある値にリセットされます。- パラメータ:
typeKind- ローカル変数の型- 戻り値:
- 新しいローカル変数のローカル変数スロット
-
transforming
default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler) ハンドラによって構築されたコードに変換を適用し、結果をこのビルダーに指示します。- APIのノート:
- これは
ClassFileBuilder.transform(java.lang.classfile.CompoundElement<E>, java.lang.classfile.ClassFileTransform<?, E, B>)に似ていますが、まずコード要素をCodeModelとして表示する必要はありません。 - パラメータ:
transform- ハンドラによって構築されたコードに適用する変換handler-CodeBuilderを受信してコードを作成するハンドラ- 戻り値:
- このビルダー
-
block
default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler) 構築中のメソッドに字句ブロックを追加します。このブロック内では、
startLabel()およびendLabel()はブロックの開始と終了に対応し、CodeBuilder.BlockCodeBuilder.breakLabel()はブロックの終わり、またはこのビルダーでこのコールの直後のカーソル位置にも対応します。- パラメータ:
handler- 字句ブロックの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラ- 戻り値:
- このビルダー
-
ifThen
default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) オペランド・スタック上部のboolean値に条件付き"if-then"ブロックを追加します。 値がtrueを表す場合、制御フローは"then"ブロックに入ります。"then"ブロックの
CodeBuilder.BlockCodeBuilder.breakLabel()は、このビルダーでこのコールの直後にカーソル位置に対応します。- パラメータ:
thenHandler-ifの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラ- 戻り値:
- このビルダー
- 関連項目:
-
ifThen
default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) 指定されたopcodeに従って、オペランド・スタックの上にあるthevalue(s)に条件付き"if-then"ブロックを追加します。opcodeの分岐条件が成功すると、制御フローは"then"ブロックに入ります。"then"ブロックの
CodeBuilder.BlockCodeBuilder.breakLabel()は、このビルダーでこのコールの直後にカーソル位置に対応します。- パラメータ:
opcode- スタック上の1つまたは2つのオペランドを受け入れる分岐命令の操作コードthenHandler-ifの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException- 操作コードが、1つまたは2つのオペランドを受け入れる分岐命令用ではない場合
-
ifThenElse
default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) オペランド・スタック上部のboolean値に条件付き"if-then-else"ブロックを追加します。 制御フローは、値がtrueを表す場合は"then"ブロックに入り、それ以外の場合は"else"ブロックに入ります。各ブロックの
CodeBuilder.BlockCodeBuilder.breakLabel()は、このビルダーでのこのコールの直後のカーソル位置に対応します。- パラメータ:
thenHandler-ifの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラelseHandler-elseの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラ- 戻り値:
- このビルダー
- 関連項目:
-
ifThenElse
default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) 指定されたopcodeに従って、オペランド・スタックの上にあるthevalue(s)に条件付き"if-then-else"ブロックを追加します。 制御フローは、opcodeの分岐条件が成功すると"then"ブロックに入り、それ以外の場合は"else"ブロックに入ります。各ブロックの
CodeBuilder.BlockCodeBuilder.breakLabel()は、このビルダーでのこのコールの直後のカーソル位置に対応します。- パラメータ:
opcode- スタック上の1つまたは2つのオペランドを受け入れる分岐命令の操作コードthenHandler-ifの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラelseHandler-elseの本文を生成するためのCodeBuilder.BlockCodeBuilderを受信するハンドラ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException- 操作コードが、1つまたは2つのオペランドを受け入れる分岐命令用ではない場合
-
trying
default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler) 1つのtryブロックと0個以上のcatchブロックで構成される"try-catch"ブロックを追加します。 tryブロック内の命令によってスローされた例外は、catchブロックによって捕捉される場合があります。tryブロックおよび
catchesHandler内のすべてのcatchブロックのCodeBuilder.BlockCodeBuilder.breakLabel()は、このビルダーでのこのコールの直後にカーソル位置に対応します。- パラメータ:
tryHandler- tryブロックの本文を生成するCodeBuilder.BlockCodeBuilderを受信するハンドラ。catchesHandler- catchブロックの本体を生成するCodeBuilder.CatchBuilderを受信するハンドラ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException- tryブロックが空の場合- 関連項目:
-
loadLocal
default CodeBuilder loadLocal(TypeKind tk, int slot) ローカル変数から値をロードする命令を生成します。- パラメータ:
tk- ロード・タイプslot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-tkがvoidの場合、またはslotが範囲外の場合- 関連項目:
-
storeLocal
default CodeBuilder storeLocal(TypeKind tk, int slot) ローカル変数に値を格納する命令を生成します。- パラメータ:
tk- ストア・タイプslot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-tkがvoidの場合、またはslotが範囲外の場合- 関連項目:
-
branch
default CodeBuilder branch(Opcode op, Label target) ブランチ命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、opcodeにsize 3があり、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
op- ブランチ・コードtarget- ブランチ・ターゲット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-opがOpcode.Kind.BRANCHでない場合- 関連項目:
-
return_
-
fieldAccess
default CodeBuilder fieldAccess(Opcode opcode, FieldRefEntry ref) フィールドにアクセスするための指示を生成します。- パラメータ:
opcode- フィールド・アクセス・コードref- フィールド参照- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-opcodeがOpcode.Kind.FIELD_ACCESSでない場合- 関連項目:
-
fieldAccess
default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type) フィールドにアクセスするための指示を生成します。- パラメータ:
opcode- フィールド・アクセス・コードowner- クラスname- フィールド名type- フィールド・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-opcodeがOpcode.Kind.FIELD_ACCESSでない場合、またはownerがプリミティブの場合- 関連項目:
-
invoke
default CodeBuilder invoke(Opcode opcode, MemberRefEntry ref) メソッドを呼び出す命令を生成します。- パラメータ:
opcode- 呼出しopcoderef- インタフェース・メソッドまたはメソッド参照- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-opcodeがOpcode.Kind.INVOKEでない場合- 関連項目:
-
invoke
default CodeBuilder invoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface) メソッドを呼び出す命令を生成します。- パラメータ:
opcode- 呼出しopcodeowner- クラスname- メソッド名desc- メソッドの型isInterface- 所有者クラスがインタフェースかどうか- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-opcodeがOpcode.Kind.INVOKEでない場合、またはownerがプリミティブの場合- 関連項目:
-
arrayLoad
default CodeBuilder arrayLoad(TypeKind tk) 配列からロードする命令を生成します。- パラメータ:
tk- 配列要素タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-tkがvoidの場合- 関連項目:
-
arrayStore
default CodeBuilder arrayStore(TypeKind tk) 配列に格納する命令を生成します。- パラメータ:
tk- 配列要素タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-tkがvoidの場合- 関連項目:
-
conversion
default CodeBuilder conversion(TypeKind fromType, TypeKind toType) Generatesinstruction(s):fromTypeをtoTypeに変換します。- パラメータ:
fromType- ソース型toType- ターゲット型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-voidまたはreferenceの変換用- 関連項目:
-
loadConstant
default CodeBuilder loadConstant(ConstantDesc value) 定数をオペランド・スタックにプッシュする命令を生成します。- パラメータ:
value- 定数値(null)- 戻り値:
- このビルダー
- 関連項目:
-
loadConstant
default CodeBuilder loadConstant(int value) 定数int値をオペランド・スタックにプッシュする命令を生成します。 これは、loadConstant(Integer.valueOf(value))と同等です。- パラメータ:
value- int値- 戻り値:
- このビルダー
- 関連項目:
-
loadConstant
default CodeBuilder loadConstant(long value) 定数long値をオペランド・スタックにプッシュする命令を生成します。 これは、loadConstant(Long.valueOf(value))と同等です。- パラメータ:
value- long値- 戻り値:
- このビルダー
- 関連項目:
-
loadConstant
default CodeBuilder loadConstant(float value) 定数float値をオペランド・スタックにプッシュする命令を生成します。 これは、loadConstant(Float.valueOf(value))と同等です。floatのすべてのNaN値は、単一の「"canonical" NaN値」に縮小される場合と縮小されない場合があります。- パラメータ:
value- float値- 戻り値:
- このビルダー
- 関連項目:
-
loadConstant
default CodeBuilder loadConstant(double value) 定数double値をオペランド・スタックにプッシュする命令を生成します。 これは、loadConstant(Double.valueOf(value))と同等です。doubleのすべてのNaN値は、単一の「"canonical" NaN値」に縮小される場合と縮小されない場合があります。- パラメータ:
value- double値- 戻り値:
- このビルダー
- 関連項目:
-
nop
-
newBoundLabel
-
labelBinding
default CodeBuilder labelBinding(Label label) ラベルを現在の位置にバインドします。- APIのノート:
- バインドするラベルは、「このビルダーから」である必要はありません。別の解析済
CodeModelからでもかまいません。 - パラメータ:
label- ラベル- 戻り値:
- このビルダー
- 関連項目:
-
lineNumber
default CodeBuilder lineNumber(int line) 現在の位置から始まるソース行番号を宣言します。このコールは、
ClassFile.LineNumbersOptionに従って無視できます。- パラメータ:
line- 行番号- 戻り値:
- このビルダー
- 関連項目:
-
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassEntry catchType) 例外表エントリを宣言します。引数ラベルのいずれかがboundでなく、
ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
start- tryブロックの開始end- tryブロックの終了handler- 例外ハンドラの起動catchType- すべての例外およびエラーを捕捉するには、catch型をnullにできます- 戻り値:
- このビルダー
- 関連項目:
-
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType) 例外表エントリを宣言します。引数ラベルのいずれかがboundでなく、
ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
start- tryブロックの開始end- tryブロックの終了handler- 例外ハンドラの起動catchType- オプションのcatchタイプ。すべての例外およびエラーを捕捉する場合は空- 戻り値:
- このビルダー
- 関連項目:
-
exceptionCatch
default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType) 例外表エントリを宣言します。引数ラベルのいずれかがboundでなく、
ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
start- tryブロックの開始end- tryブロックの終了handler- 例外ハンドラの起動catchType- catch型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-catchTypeがプリミティブの場合- 関連項目:
-
exceptionCatchAll
default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler) すべての例外およびエラーを捕捉する例外表エントリを宣言します。引数ラベルのいずれかがboundでなく、
ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
start- tryブロックの開始end- tryブロックの終了handler- 例外ハンドラの起動- 戻り値:
- このビルダー
- 関連項目:
-
characterRange
default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags) 文字範囲エントリを宣言します。ClassFile.DebugElementsOption.DROP_DEBUGが設定されている場合、または引数ラベルのいずれかがboundではなく、ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
startScope- 文字範囲の開始スコープendScope- 文字範囲の終了スコープcharacterRangeStart- 文字範囲リージョン(包含)のエンコードされた開始characterRangeEnd- 文字範囲リージョン(除外)のエンコードされた終了flags- 範囲の種類を示すフラグ・ワード- 戻り値:
- このビルダー
- 関連項目:
-
localVariable
default CodeBuilder localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope) ローカル変数エントリを宣言します。ClassFile.DebugElementsOption.DROP_DEBUGが設定されている場合、または引数ラベルのいずれかがboundではなく、ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
slot- ローカル変数スロットnameEntry- 変数名descriptorEntry- 変数記述子startScope- 変数の開始スコープendScope- 変数の終了スコープ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
localVariable
default CodeBuilder localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope) ローカル変数エントリを宣言します。ClassFile.DebugElementsOption.DROP_DEBUGが設定されている場合、または引数ラベルのいずれかがboundではなく、ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- パラメータ:
slot- ローカル変数スロットname- 変数名descriptor- 変数記述子startScope- 変数の開始スコープendScope- 変数の終了スコープ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
localVariableType
default CodeBuilder localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope) ローカル変数タイプ・エントリを宣言します。ClassFile.DebugElementsOption.DROP_DEBUGが設定されている場合、または引数ラベルのいずれかがboundではなく、ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- APIのノート:
- ローカル変数型エントリが宣言されている場合、シグネチャの消去(JLS 4.6)から導出された記述子を持つローカル変数エントリも宣言する必要があります。
- パラメータ:
slot- ローカル変数スロットnameEntry- 変数名signatureEntry- 変数シグネチャstartScope- 変数の開始スコープendScope- 変数の終了スコープ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
localVariableType
default CodeBuilder localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope) ローカル変数タイプ・エントリを宣言します。ClassFile.DebugElementsOption.DROP_DEBUGが設定されている場合、または引数ラベルのいずれかがboundではなく、ClassFile.DeadLabelsOption.DROP_DEAD_LABELSが設定されている場合、このコールは無視される可能性があります。- APIのノート:
- ローカル変数型エントリが宣言されている場合、シグネチャの消去(JLS 4.6)から導出された記述子を持つローカル変数エントリも宣言する必要があります。
- パラメータ:
slot- ローカル変数スロットname- 変数名signature- 変数シグネチャstartScope- 変数の開始スコープendScope- 変数の終了スコープ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
aconst_null
-
aaload
-
aastore
-
aload
default CodeBuilder aload(int slot) ローカル変数からreferenceをロードする命令を生成します。これにより、
aload_<N>およびwide aload命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
anewarray
default CodeBuilder anewarray(ClassEntry classEntry) referenceの新しい配列を作成する命令を生成します。- パラメータ:
classEntry- コンポーネント・タイプ- 戻り値:
- このビルダー
- 関連項目:
-
anewarray
default CodeBuilder anewarray(ClassDesc className) referenceの新しい配列を作成する命令を生成します。- パラメータ:
className- コンポーネント・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-classNameがプリミティブ型を表す場合- 関連項目:
-
areturn
-
arraylength
-
astore
default CodeBuilder astore(int slot) referenceをローカル変数に格納する命令を生成します。 このような命令は、returnAddressを格納することもできます。これにより、
astore_<N>およびwide astore命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
athrow
-
baload
-
bastore
-
bipush
default CodeBuilder bipush(int b) - パラメータ:
b- バイトの範囲内のint- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-bがバイトの範囲外の場合- 関連項目:
-
caload
-
castore
-
checkcast
default CodeBuilder checkcast(ClassEntry type) オブジェクトが指定の型かどうかをチェックする命令を生成し、チェックが失敗した場合はClassCastExceptionをスローします。- パラメータ:
type- オブジェクト型- 戻り値:
- このビルダー
- 関連項目:
-
checkcast
default CodeBuilder checkcast(ClassDesc type) オブジェクトが指定の型かどうかをチェックする命令を生成し、チェックが失敗した場合はClassCastExceptionをスローします。- パラメータ:
type- オブジェクト型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-typeがプリミティブ型を表す場合- 関連項目:
-
d2f
-
d2i
-
d2l
-
dadd
-
daload
-
dastore
-
dcmpg
-
dcmpl
-
dconst_0
-
dconst_1
-
ddiv
-
dload
default CodeBuilder dload(int slot) ローカル変数からdoubleをロードする命令を生成します。これにより、
dload_<N>およびwide dload命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
dmul
-
dneg
-
drem
-
dreturn
-
dstore
default CodeBuilder dstore(int slot) doubleをローカル変数に格納する命令を生成します。これにより、
dstore_<N>およびwide dstore命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
dsub
-
dup
-
dup2
-
dup2_x1
-
dup2_x2
default CodeBuilder dup2_x2()上位1つまたは2つのオペランド・スタック値を複製し、2つ、3つ、または4つの値を下に挿入する命令を生成します。- 戻り値:
- このビルダー
- 関連項目:
-
dup_x1
-
dup_x2
-
f2d
-
f2i
-
f2l
-
fadd
-
faload
-
fastore
-
fcmpg
-
fcmpl
-
fconst_0
-
fconst_1
-
fconst_2
-
fdiv
-
fload
default CodeBuilder fload(int slot) ローカル変数からfloatをロードする命令を生成します。これにより、
fload_<N>およびwide fload命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
fmul
-
fneg
-
frem
-
freturn
-
fstore
default CodeBuilder fstore(int slot) floatをローカル変数に格納する命令を生成します。これにより、
fstore_<N>およびwide fstore命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
fsub
-
getfield
default CodeBuilder getfield(FieldRefEntry ref) オブジェクトからフィールドをフェッチする命令を生成します。- パラメータ:
ref- フィールド参照- 戻り値:
- このビルダー
- 関連項目:
-
getfield
default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type) オブジェクトからフィールドをフェッチする命令を生成します。- パラメータ:
owner- 所有者クラスname- フィールド名type- フィールド・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
getstatic
default CodeBuilder getstatic(FieldRefEntry ref) クラスまたはインタフェースから静的フィールドを取得する命令を生成します。- パラメータ:
ref- フィールド参照- 戻り値:
- このビルダー
- 関連項目:
-
getstatic
default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type) クラスまたはインタフェースから静的フィールドを取得する命令を生成します。- パラメータ:
owner- 所有者クラスname- フィールド名type- フィールド・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
goto_
default CodeBuilder goto_(Label target) 常に分岐する命令を生成します。ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定されている場合、これによってgoto_w命令が生成されることもあります。- APIのノート:
- 命令の名前は
gotoで、これはJavaプログラミング言語の予約キーワードと一致するため、このメソッドはかわりに_サフィクスを付けて名前が付けられます。 - パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
goto_w
default CodeBuilder goto_w(Label target) 常にワイド・インデックスで分岐する命令を生成します。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
i2b
-
i2c
-
i2d
-
i2f
-
i2l
-
i2s
-
iadd
-
iaload
-
iand
-
iastore
-
iconst_0
-
iconst_1
-
iconst_2
-
iconst_3
-
iconst_4
-
iconst_5
-
iconst_m1
-
idiv
-
if_acmpeq
default CodeBuilder if_acmpeq(Label target) reference比較operand1 == operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_acmpne
default CodeBuilder if_acmpne(Label target) reference比較operand1 != operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_icmpeq
default CodeBuilder if_icmpeq(Label target) int比較operand1 == operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_icmpge
default CodeBuilder if_icmpge(Label target) int比較operand1 >= operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_icmpgt
default CodeBuilder if_icmpgt(Label target) int比較operand1 > operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_icmple
default CodeBuilder if_icmple(Label target) int比較operand1 <= operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_icmplt
default CodeBuilder if_icmplt(Label target) int比較operand1 < operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
if_icmpne
default CodeBuilder if_icmpne(Label target) int比較operand1 != operand2が成功した場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifnonnull
default CodeBuilder ifnonnull(Label target) referenceがnullでない場合に分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifnull
default CodeBuilder ifnull(Label target) referenceがnullの場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifeq
default CodeBuilder ifeq(Label target) intと0(ゼロ)の== 0の比較が成功した場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifge
default CodeBuilder ifge(Label target) intと0(ゼロ)の>= 0の比較が成功した場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifgt
default CodeBuilder ifgt(Label target) intと0(ゼロ)の> 0の比較が成功した場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifle
default CodeBuilder ifle(Label target) intと0(ゼロ)の<= 0の比較が成功した場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
iflt
default CodeBuilder iflt(Label target) intと0(ゼロ)の< 0の比較が成功した場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
ifne
default CodeBuilder ifne(Label target) intと0(ゼロ)の!= 0の比較が成功した場合、分岐する命令を生成します。これにより、
ClassFile.ShortJumpsOption.FIX_SHORT_JUMPSが設定され、targetを[-32768, 32767]でBCIオフセットとしてエンコードできない場合に、同じ効果を得るための複数の命令が生成されることがあります。- パラメータ:
target- ブランチ・ターゲット- 戻り値:
- このビルダー
- 関連項目:
-
iinc
default CodeBuilder iinc(int slot, int val) - パラメータ:
slot- ローカル変数スロットval- インクリメント値- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotまたはvalが範囲外の場合- 関連項目:
-
iload
default CodeBuilder iload(int slot) ローカル変数からintをロードする命令を生成します。これにより、
iload_<N>およびwide iload命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
imul
-
ineg
-
instanceOf
default CodeBuilder instanceOf(ClassEntry target) オブジェクトが指定された型であるかどうかを判断する命令を生成し、オペランド・スタックにbooleanの結果を生成します。- APIのノート:
- 命令の名前は
instanceofで、これはJavaプログラミング言語の予約キーワードと一致するため、このメソッドはかわりにキャメル・ケースで名前が付けられます。 - パラメータ:
target- ターゲット型- 戻り値:
- このビルダー
- 関連項目:
-
instanceOf
default CodeBuilder instanceOf(ClassDesc target) オブジェクトが指定された型であるかどうかを判断する命令を生成し、オペランド・スタックにbooleanの結果を生成します。- APIのノート:
- 命令の名前は
instanceofで、これはJavaプログラミング言語の予約キーワードと一致するため、このメソッドはかわりにキャメル・ケースで名前が付けられます。 - パラメータ:
target- ターゲット型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-targetがプリミティブ型を表す場合- 関連項目:
-
invokedynamic
default CodeBuilder invokedynamic(InvokeDynamicEntry ref) 動的に計算されたコール・サイトを起動する命令を生成します。- パラメータ:
ref- 動的コール・サイト- 戻り値:
- このビルダー
- 関連項目:
-
invokedynamic
default CodeBuilder invokedynamic(DynamicCallSiteDesc ref) 動的に計算されたコール・サイトを起動する命令を生成します。- パラメータ:
ref- 動的コール・サイト- 戻り値:
- このビルダー
- 関連項目:
-
invokeinterface
default CodeBuilder invokeinterface(InterfaceMethodRefEntry ref) インタフェース・メソッドを起動する命令を生成します。- パラメータ:
ref- インタフェース・メソッド参照- 戻り値:
- このビルダー
- 関連項目:
-
invokeinterface
default CodeBuilder invokeinterface(ClassDesc owner, String name, MethodTypeDesc type) インタフェース・メソッドを起動する命令を生成します。- パラメータ:
owner- 所有者インタフェースname- メソッド名type- メソッドの型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
invokespecial
default CodeBuilder invokespecial(InterfaceMethodRefEntry ref) インタフェースでインスタンス・メソッドを呼び出す命令を生成します。現在のクラスのメソッドとそのスーパータイプを直接呼び出します。- パラメータ:
ref- インタフェース・メソッド参照- 戻り値:
- このビルダー
- 関連項目:
-
invokespecial
default CodeBuilder invokespecial(MethodRefEntry ref) クラス内のインスタンス・メソッドを起動する命令を生成します。現在のクラスのインスタンス初期化メソッドおよびメソッドとそのスーパータイプを直接呼び出します。- パラメータ:
ref- メソッド参照- 戻り値:
- このビルダー
- 関連項目:
-
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type) クラス内のインスタンス・メソッドを起動する命令を生成します。現在のクラスのインスタンス初期化メソッドおよびメソッドとそのスーパータイプを直接呼び出します。- パラメータ:
owner- 所有者クラス、インタフェースであってはなりませんname- メソッド名type- メソッドの型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
invokespecial
default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) インスタンス・メソッドを起動する命令を生成します。インスタンス初期化メソッドと、現在のクラスとそのスーパータイプのメソッドを直接呼び出します。- パラメータ:
owner- 所有者クラスまたはインタフェースname- メソッド名type- メソッドの型isInterface- 所有者がインタフェースかどうか- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
invokestatic
default CodeBuilder invokestatic(InterfaceMethodRefEntry ref) インタフェースのクラス(static)メソッドを起動する命令を生成します。- パラメータ:
ref- インタフェース・メソッド参照- 戻り値:
- このビルダー
- 関連項目:
-
invokestatic
default CodeBuilder invokestatic(MethodRefEntry ref) クラスの(static)メソッドを呼び出す命令を生成します。- パラメータ:
ref- メソッド参照- 戻り値:
- このビルダー
- 関連項目:
-
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type) クラスの(static)メソッドを呼び出す命令を生成します。- パラメータ:
owner- 所有者クラス、インタフェースであってはなりませんname- メソッド名type- メソッドの型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
invokestatic
default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) クラス(static)メソッドを起動する命令を生成します。- パラメータ:
owner- 所有者クラスまたはインタフェースname- メソッド名type- メソッドの型isInterface- 所有者がインタフェースかどうか- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
invokevirtual
default CodeBuilder invokevirtual(MethodRefEntry ref) インスタンス・メソッドを起動する命令を生成します。クラスに基づいてディスパッチします。- パラメータ:
ref- メソッド参照- 戻り値:
- このビルダー
- 関連項目:
-
invokevirtual
default CodeBuilder invokevirtual(ClassDesc owner, String name, MethodTypeDesc type) インスタンス・メソッドを起動する命令を生成します。クラスに基づいてディスパッチします。- パラメータ:
owner- 所有者クラス、インタフェースであってはなりませんname- メソッド名type- メソッドの型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
ior
-
irem
-
ireturn
-
ishl
-
ishr
default CodeBuilder ishr()- 戻り値:
- このビルダー
- 関連項目:
-
istore
default CodeBuilder istore(int slot) intをローカル変数に格納する命令を生成します。これにより、
istore_<N>およびwide istore命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
isub
-
iushr
default CodeBuilder iushr()- 戻り値:
- このビルダー
- 関連項目:
-
ixor
-
lookupswitch
default CodeBuilder lookupswitch(Label defaultTarget, List<SwitchCase> cases) キーの一致およびジャンプによってジャンプ表にアクセスする命令を生成します。- パラメータ:
defaultTarget- デフォルトのジャンプ・ターゲットcases- スイッチ・ケース- 戻り値:
- このビルダー
- 関連項目:
-
l2d
-
l2f
-
l2i
-
ladd
-
laload
-
land
-
lastore
-
lcmp
-
lconst_0
-
lconst_1
-
ldc
default CodeBuilder ldc(ConstantDesc value) - APIのノート:
loadConstantは、より最適な命令を生成し、ldc命令が厳密には必要とされない場合は、一般的な定数に使用する必要があります。- パラメータ:
value- 定数値- 戻り値:
- このビルダー
- 関連項目:
-
ldc
default CodeBuilder ldc(LoadableConstantEntry entry) - パラメータ:
entry- 定数値- 戻り値:
- このビルダー
- 関連項目:
-
ldiv
-
lload
default CodeBuilder lload(int slot) ローカル変数からlongをロードする命令を生成します。これにより、
lload_<N>およびwide lload命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
lmul
-
lneg
-
lor
-
lrem
-
lreturn
-
lshl
-
lshr
default CodeBuilder lshr()- 戻り値:
- このビルダー
- 関連項目:
-
lstore
default CodeBuilder lstore(int slot) longをローカル変数に格納する命令を生成します。これにより、
lstore_<N>およびwide lstore命令が生成されることもあります。- パラメータ:
slot- ローカル変数スロット- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-slotが範囲外の場合- 関連項目:
-
lsub
-
lushr
default CodeBuilder lushr()- 戻り値:
- このビルダー
- 関連項目:
-
lxor
-
monitorenter
-
monitorexit
-
multianewarray
default CodeBuilder multianewarray(ClassEntry array, int dims) 新しい多次元配列を作成する命令を生成します。- パラメータ:
array- 配列タイプdims- ディメンションの数- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-dimsが範囲外の場合- 関連項目:
-
multianewarray
default CodeBuilder multianewarray(ClassDesc array, int dims) 新しい多次元配列を作成する命令を生成します。- パラメータ:
array- 配列タイプdims- ディメンションの数- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-arrayがプリミティブ型を表す場合、またはdimsが範囲外の場合- 関連項目:
-
new_
default CodeBuilder new_(ClassEntry clazz) 新しいオブジェクトを作成する命令を生成します。- APIのノート:
- 命令の名前は
newで、これはJavaプログラミング言語の予約キーワードと一致するため、このメソッドはかわりに_サフィクスを付けて名前が付けられます。 - パラメータ:
clazz- 新しいクラス・タイプ- 戻り値:
- このビルダー
- 関連項目:
-
new_
default CodeBuilder new_(ClassDesc clazz) 新しいオブジェクトを作成する命令を生成します。- APIのノート:
- 命令の名前は
newで、これはJavaプログラミング言語の予約キーワードと一致するため、このメソッドはかわりに_サフィクスを付けて名前が付けられます。 - パラメータ:
clazz- 新しいクラス・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-clazzがプリミティブ型を表す場合- 関連項目:
-
newarray
default CodeBuilder newarray(TypeKind typeKind) プリミティブ型の新しい配列を作成する命令を生成します。- パラメータ:
typeKind- プリミティブ配列型- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-typeKindがプリミティブ配列の有効なコンポーネント・タイプでない場合- 関連項目:
-
pop
-
pop2
-
putfield
default CodeBuilder putfield(FieldRefEntry ref) オブジェクトのフィールドを設定する命令を生成します。- パラメータ:
ref- フィールド参照- 戻り値:
- このビルダー
- 関連項目:
-
putfield
default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type) オブジェクトのフィールドを設定する命令を生成します。- パラメータ:
owner- 所有者クラスname- フィールド名type- フィールド・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
putstatic
default CodeBuilder putstatic(FieldRefEntry ref) クラスの静的フィールドを設定する命令を生成します。- パラメータ:
ref- フィールド参照- 戻り値:
- このビルダー
- 関連項目:
-
putstatic
default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type) クラスの静的フィールドを設定する命令を生成します。- パラメータ:
owner- 所有者クラスまたはインタフェースname- フィールド名type- フィールド・タイプ- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-ownerがプリミティブ型を表す場合- 関連項目:
-
return_
default CodeBuilder return_()このメソッドからvoidを返す命令を生成します。- APIのノート:
- 命令の名前は
returnで、これはJavaプログラミング言語の予約キーワードと一致するため、このメソッドはかわりに_サフィクスを付けて名前が付けられます。 - 戻り値:
- このビルダー
- 関連項目:
-
saload
-
sastore
-
sipush
default CodeBuilder sipush(int s) - パラメータ:
s- 短い範囲のint- 戻り値:
- このビルダー
- スロー:
IllegalArgumentException-sがshortの範囲外の場合- 関連項目:
-
swap
-
tableswitch
default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases) インデックスでジャンプ表にアクセスし、ジャンプする命令を生成します。- パラメータ:
low- 最小キー(包含)high- 最大キー(包含)defaultTarget- デフォルトのジャンプ・ターゲットcases- スイッチ・ケース- 戻り値:
- このビルダー
- 関連項目:
-
tableswitch
default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases) インデックスでジャンプ表にアクセスし、ジャンプする命令を生成します。casesから最小および最大キーを計算します。- パラメータ:
defaultTarget- デフォルトのジャンプ・ターゲットcases- スイッチ・ケース- 戻り値:
- このビルダー
- 関連項目:
-