インタフェース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- スイッチ・ケース- 戻り値:
- このビルダー
- 関連 目:
-