インタフェース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 interface
catchブロックを追加するビルダー。 -
メソッドのサマリー
修飾子と型メソッド説明default CodeBuilder
aaload()
reference
配列からロードする命令を生成します。default CodeBuilder
aastore()
reference
配列に格納する命令を生成します。default CodeBuilder
nullオブジェクトreference
をオペランド・スタックにプッシュする命令を生成します。int
allocateLocal
(TypeKind typeKind) 新しいローカル変数のローカル変数スロットを返します。default CodeBuilder
aload
(int slot) ローカル変数からreference
をロードする命令を生成します。default CodeBuilder
anewarray
(ClassEntry classEntry) reference
の新しい配列を作成する命令を生成します。default CodeBuilder
reference
の新しい配列を作成する命令を生成します。default CodeBuilder
areturn()
このメソッドからreference
を返す命令を生成します。default CodeBuilder
配列の長さを取得する命令を生成します。default CodeBuilder
配列からロードする命令を生成します。default CodeBuilder
arrayStore
(TypeKind tk) 配列に格納する命令を生成します。default CodeBuilder
astore
(int slot) reference
をローカル変数に格納する命令を生成します。default CodeBuilder
athrow()
例外またはエラーをスローする命令を生成します。default CodeBuilder
baload()
default CodeBuilder
bastore()
default CodeBuilder
bipush
(int b) default CodeBuilder
block
(Consumer<CodeBuilder.BlockCodeBuilder> handler) 構築中のメソッドに字句ブロックを追加します。default CodeBuilder
ブランチ命令を生成します。default CodeBuilder
caload()
char
配列からロードする命令を生成します。default CodeBuilder
castore()
char
配列に格納する命令を生成します。default CodeBuilder
characterRange
(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags) 文字範囲エントリを宣言します。default CodeBuilder
checkcast
(ClassEntry type) オブジェクトが指定の型かどうかをチェックする命令を生成し、チェックが失敗した場合はClassCastException
をスローします。default CodeBuilder
オブジェクトが指定の型かどうかをチェックする命令を生成し、チェックが失敗した場合はClassCastException
をスローします。default CodeBuilder
conversion
(TypeKind fromType, TypeKind toType) Generatesinstruction(s):fromType
をtoType
に変換します。default CodeBuilder
d2f()
default CodeBuilder
d2i()
default CodeBuilder
d2l()
default CodeBuilder
dadd()
2つのdoubles
を追加する命令を生成します。default CodeBuilder
daload()
double
配列からロードする命令を生成します。default CodeBuilder
dastore()
double
配列に格納する命令を生成します。default CodeBuilder
dcmpg()
default CodeBuilder
dcmpl()
default CodeBuilder
dconst_0()
double
定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
dconst_1()
double
定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
ddiv()
doubles
を分割する命令を生成します。default CodeBuilder
dload
(int slot) ローカル変数からdouble
をロードする命令を生成します。default CodeBuilder
dmul()
doubles
を乗算する命令を生成します。default CodeBuilder
dneg()
double
を否定する命令を生成します。default CodeBuilder
drem()
double
剰余を計算する命令を生成します。default CodeBuilder
dreturn()
このメソッドからdouble
を返す命令を生成します。default CodeBuilder
dstore
(int slot) double
をローカル変数に格納する命令を生成します。default CodeBuilder
dsub()
doubles
を減算する命令を生成します。default CodeBuilder
dup()
上部のオペランド・スタック値を複製する命令を生成します。default CodeBuilder
dup_x1()
上部のオペランド・スタック値を複製し、下に2つの値を挿入する命令を生成します。default CodeBuilder
dup_x2()
上部のオペランド・スタック値を複製し、2つまたは3つの値を下に挿入する命令を生成します。default CodeBuilder
dup2()
上位1つまたは2つのオペランド・スタック値を複製する命令を生成します。default CodeBuilder
dup2_x1()
上位1つまたは2つのオペランド・スタック値を複製し、2つまたは3つの値を下に挿入する命令を生成します。default CodeBuilder
dup2_x2()
上位1つまたは2つのオペランド・スタック値を複製し、2つ、3つ、または4つの値を下に挿入する命令を生成します。endLabel()
現在のブロックの末尾に関連付けられたラベルを返します。default CodeBuilder
exceptionCatch
(Label start, Label end, Label handler, ClassEntry catchType) 例外表エントリを宣言します。default CodeBuilder
exceptionCatch
(Label start, Label end, Label handler, ClassDesc catchType) 例外表エントリを宣言します。default CodeBuilder
exceptionCatch
(Label start, Label end, Label handler, Optional<ClassEntry> catchType) 例外表エントリを宣言します。default CodeBuilder
exceptionCatchAll
(Label start, Label end, Label handler) すべての例外およびエラーを捕捉する例外表エントリを宣言します。default CodeBuilder
f2d()
default CodeBuilder
f2i()
default CodeBuilder
f2l()
default CodeBuilder
fadd()
2つのfloats
を追加する命令を生成します。default CodeBuilder
faload()
float
配列からロードする命令を生成します。default CodeBuilder
fastore()
float
配列に格納する命令を生成します。default CodeBuilder
fcmpg()
default CodeBuilder
fcmpl()
default CodeBuilder
fconst_0()
float
定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
fconst_1()
float
定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
fconst_2()
float
定数2をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
fdiv()
floats
を分割する命令を生成します。default CodeBuilder
fieldAccess
(Opcode opcode, FieldRefEntry ref) フィールドにアクセスするための指示を生成します。default CodeBuilder
fieldAccess
(Opcode opcode, ClassDesc owner, String name, ClassDesc type) フィールドにアクセスするための指示を生成します。default CodeBuilder
fload
(int slot) ローカル変数からfloat
をロードする命令を生成します。default CodeBuilder
fmul()
floats
を乗算する命令を生成します。default CodeBuilder
fneg()
float
を否定する命令を生成します。default CodeBuilder
frem()
floats
剰余を計算する命令を生成します。default CodeBuilder
freturn()
このメソッドからfloat
を返す命令を生成します。default CodeBuilder
fstore
(int slot) float
をローカル変数に格納する命令を生成します。default CodeBuilder
fsub()
floats
を減算する命令を生成します。default CodeBuilder
getfield
(FieldRefEntry ref) オブジェクトからフィールドをフェッチする命令を生成します。default CodeBuilder
オブジェクトからフィールドをフェッチする命令を生成します。default CodeBuilder
getstatic
(FieldRefEntry ref) クラスまたはインタフェースから静的フィールドを取得する命令を生成します。default CodeBuilder
クラスまたはインタフェースから静的フィールドを取得する命令を生成します。default CodeBuilder
常に分岐する命令を生成します。default CodeBuilder
常にワイド・インデックスで分岐する命令を生成します。default CodeBuilder
i2b()
default CodeBuilder
i2c()
default CodeBuilder
i2d()
default CodeBuilder
i2f()
default CodeBuilder
i2l()
default CodeBuilder
i2s()
default CodeBuilder
iadd()
2つのints
を追加する命令を生成します。default CodeBuilder
iaload()
int
配列からロードする命令を生成します。default CodeBuilder
iand()
default CodeBuilder
iastore()
int
配列に格納する命令を生成します。default CodeBuilder
iconst_0()
int
定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
iconst_1()
int
定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
iconst_2()
int
定数2をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
iconst_3()
int
定数3をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
iconst_4()
int
定数4をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
iconst_5()
int
定数5をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
int
定数 -1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
idiv()
ints
を分割する命令を生成します。default CodeBuilder
reference
比較operand1 == operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
reference
比較operand1 != operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
比較operand1 == operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
比較operand1 >= operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
比較operand1 > operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
比較operand1 <= operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
比較operand1 < operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
比較operand1 != operand2
が成功した場合に分岐する命令を生成します。default CodeBuilder
int
と0(ゼロ)の== 0
の比較が成功した場合、分岐する命令を生成します。default CodeBuilder
int
と0(ゼロ)の>= 0
の比較が成功した場合、分岐する命令を生成します。default CodeBuilder
int
と0(ゼロ)の> 0
の比較が成功した場合、分岐する命令を生成します。default CodeBuilder
int
と0(ゼロ)の<= 0
の比較が成功した場合、分岐する命令を生成します。default CodeBuilder
int
と0(ゼロ)の< 0
の比較が成功した場合、分岐する命令を生成します。default CodeBuilder
int
と0(ゼロ)の!= 0
の比較が成功した場合、分岐する命令を生成します。default CodeBuilder
reference
がnull
でない場合に分岐する命令を生成します。default CodeBuilder
reference
がnull
の場合、分岐する命令を生成します。default CodeBuilder
ifThen
(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) 指定されたopcodeに従って、オペランド・スタックの上にあるthevalue(s)に条件付き"if-then"ブロックを追加します。default CodeBuilder
ifThen
(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler) オペランド・スタック上部のboolean
値に条件付き"if-then"ブロックを追加します。default CodeBuilder
ifThenElse
(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) 指定されたopcodeに従って、オペランド・スタックの上にあるthevalue(s)に条件付き"if-then-else"ブロックを追加します。default CodeBuilder
ifThenElse
(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler) オペランド・スタック上部のboolean
値に条件付き"if-then-else"ブロックを追加します。default CodeBuilder
iinc
(int slot, int val) int
ローカル変数を定数で増分する命令を生成します。default CodeBuilder
iload
(int slot) ローカル変数からint
をロードする命令を生成します。default CodeBuilder
imul()
ints
を乗算する命令を生成します。default CodeBuilder
ineg()
int
を否定する命令を生成します。default CodeBuilder
instanceOf
(ClassEntry target) オブジェクトが指定された型であるかどうかを判断する命令を生成し、オペランド・スタックにboolean
の結果を生成します。default CodeBuilder
instanceOf
(ClassDesc target) オブジェクトが指定された型であるかどうかを判断する命令を生成し、オペランド・スタックにboolean
の結果を生成します。default CodeBuilder
invoke
(Opcode opcode, MemberRefEntry ref) メソッドを呼び出す命令を生成します。default CodeBuilder
invoke
(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface) メソッドを呼び出す命令を生成します。default CodeBuilder
動的に計算されたコール・サイトを起動する命令を生成します。default CodeBuilder
動的に計算されたコール・サイトを起動する命令を生成します。default CodeBuilder
インタフェース・メソッドを起動する命令を生成します。default CodeBuilder
invokeinterface
(ClassDesc owner, String name, MethodTypeDesc type) インタフェース・メソッドを起動する命令を生成します。default CodeBuilder
インタフェースでインスタンス・メソッドを呼び出す命令を生成します。現在のクラスのメソッドとそのスーパータイプを直接呼び出します。default CodeBuilder
クラス内のインスタンス・メソッドを起動する命令を生成します。現在のクラスのインスタンス初期化メソッドおよびメソッドとそのスーパータイプを直接呼び出します。default CodeBuilder
invokespecial
(ClassDesc owner, String name, MethodTypeDesc type) クラス内のインスタンス・メソッドを起動する命令を生成します。現在のクラスのインスタンス初期化メソッドおよびメソッドとそのスーパータイプを直接呼び出します。default CodeBuilder
invokespecial
(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) インスタンス・メソッドを起動する命令を生成します。インスタンス初期化メソッドと、現在のクラスとそのスーパータイプのメソッドを直接呼び出します。default CodeBuilder
インタフェースのクラス(static)メソッドを起動する命令を生成します。default CodeBuilder
クラスの(static)メソッドを呼び出す命令を生成します。default CodeBuilder
invokestatic
(ClassDesc owner, String name, MethodTypeDesc type) クラスの(static)メソッドを呼び出す命令を生成します。default CodeBuilder
invokestatic
(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface) クラス(static)メソッドを起動する命令を生成します。default CodeBuilder
インスタンス・メソッドを起動する命令を生成します。クラスに基づいてディスパッチします。default CodeBuilder
invokevirtual
(ClassDesc owner, String name, MethodTypeDesc type) インスタンス・メソッドを起動する命令を生成します。クラスに基づいてディスパッチします。default CodeBuilder
ior()
default CodeBuilder
irem()
ints
剰余を計算する命令を生成します。default CodeBuilder
ireturn()
このメソッドからint
を返す命令を生成します。default CodeBuilder
ishl()
int
を左にシフトする命令を生成します。default CodeBuilder
ishr()
int
を右にシフトする命令を生成します。default CodeBuilder
istore
(int slot) int
をローカル変数に格納する命令を生成します。default CodeBuilder
isub()
ints
を減算する命令を生成します。default CodeBuilder
iushr()
int
権限を論理シフトする命令を生成します。default CodeBuilder
ixor()
ints
のビット単位XORを計算する命令を生成します。default CodeBuilder
l2d()
default CodeBuilder
l2f()
default CodeBuilder
l2i()
default CodeBuilder
labelBinding
(Label label) ラベルを現在の位置にバインドします。default CodeBuilder
ladd()
2つのlongs
を追加する命令を生成します。default CodeBuilder
laload()
long
配列からロードする命令を生成します。default CodeBuilder
land()
longs
のビット単位ANDを計算する命令を生成します。default CodeBuilder
lastore()
long
配列に格納する命令を生成します。default CodeBuilder
lcmp()
longs
を比較する命令を生成します。default CodeBuilder
lconst_0()
long
定数0をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
lconst_1()
long
定数1をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
ldc
(LoadableConstantEntry entry) 実行時定数プールからオペランド・スタックに項目をプッシュする命令を生成します。default CodeBuilder
ldc
(ConstantDesc value) 実行時定数プールからオペランド・スタックに項目をプッシュする命令を生成します。default CodeBuilder
ldiv()
longs
を分割する命令を生成します。default CodeBuilder
lineNumber
(int line) 現在の位置から始まるソース行番号を宣言します。default CodeBuilder
lload
(int slot) ローカル変数からlong
をロードする命令を生成します。default CodeBuilder
lmul()
longs
を乗算する命令を生成します。default CodeBuilder
lneg()
long
を否定する命令を生成します。default CodeBuilder
loadConstant
(double value) 定数double
値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
loadConstant
(float value) 定数float
値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
loadConstant
(int value) 定数int
値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
loadConstant
(long value) 定数long
値をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
loadConstant
(ConstantDesc value) 定数をオペランド・スタックにプッシュする命令を生成します。default CodeBuilder
ローカル変数から値をロードする命令を生成します。default CodeBuilder
localVariable
(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope) ローカル変数エントリを宣言します。default CodeBuilder
localVariable
(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope) ローカル変数エントリを宣言します。default CodeBuilder
localVariableType
(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope) ローカル変数タイプ・エントリを宣言します。default CodeBuilder
localVariableType
(int slot, String name, Signature signature, Label startScope, Label endScope) ローカル変数タイプ・エントリを宣言します。default CodeBuilder
lookupswitch
(Label defaultTarget, List<SwitchCase> cases) キーの一致およびジャンプによってジャンプ表にアクセスする命令を生成します。default CodeBuilder
lor()
longs
のビット単位ORを計算する命令を生成します。default CodeBuilder
lrem()
longs
剰余を計算する命令を生成します。default CodeBuilder
lreturn()
このメソッドからlong
を返す命令を生成します。default CodeBuilder
lshl()
long
を左にシフトする命令を生成します。default CodeBuilder
lshr()
long
を右にシフトする命令を生成します。default CodeBuilder
lstore
(int slot) long
をローカル変数に格納する命令を生成します。default CodeBuilder
lsub()
longs
を減算する命令を生成します。default CodeBuilder
lushr()
long
を論理的にシフトする命令を生成します。default CodeBuilder
lxor()
longs
のビット単位XORを計算する命令を生成します。default CodeBuilder
オブジェクトのモニターを入力する命令を生成します。default CodeBuilder
オブジェクトのモニターを終了する命令を生成します。default CodeBuilder
multianewarray
(ClassEntry array, int dims) 新しい多次元配列を作成する命令を生成します。default CodeBuilder
multianewarray
(ClassDesc array, int dims) 新しい多次元配列を作成する命令を生成します。default CodeBuilder
new_
(ClassEntry clazz) 新しいオブジェクトを作成する命令を生成します。default CodeBuilder
新しいオブジェクトを作成する命令を生成します。default CodeBuilder
プリミティブ型の新しい配列を作成する命令を生成します。default Label
現在の位置にバインドされた新しいラベルを作成します。newLabel()
バインドされていない新しいラベルを返します。default CodeBuilder
nop()
何もしない命令を生成します。int
parameterSlot
(int paramNo) 指定されたパラメータに関連付けられたローカル変数スロットを返します。default CodeBuilder
pop()
上部のオペランド・スタック値をポップする命令を生成します。default CodeBuilder
pop2()
上位1つまたは2つのオペランド・スタック値をポップする命令を生成します。default CodeBuilder
putfield
(FieldRefEntry ref) オブジェクトのフィールドを設定する命令を生成します。default CodeBuilder
オブジェクトのフィールドを設定する命令を生成します。default CodeBuilder
putstatic
(FieldRefEntry ref) クラスの静的フィールドを設定する命令を生成します。default CodeBuilder
クラスの静的フィールドを設定する命令を生成します。int
レシーバに関連付けられたローカル変数スロットを返します。default CodeBuilder
return_()
このメソッドからvoid
を返す命令を生成します。default CodeBuilder
戻り命令を生成します。default CodeBuilder
saload()
short
配列からロードする命令を生成します。default CodeBuilder
sastore()
short
配列に格納する命令を生成します。default CodeBuilder
sipush
(int s) 現在のブロックの先頭に関連付けられたラベルを返します。default CodeBuilder
storeLocal
(TypeKind tk, int slot) ローカル変数に値を格納する命令を生成します。default CodeBuilder
swap()
上位2つのオペランド・スタック値をスワップする命令を生成します。default CodeBuilder
tableswitch
(int low, int high, Label defaultTarget, List<SwitchCase> cases) インデックスでジャンプ表にアクセスし、ジャンプする命令を生成します。default CodeBuilder
tableswitch
(Label defaultTarget, List<SwitchCase> cases) インデックスでジャンプ表にアクセスし、ジャンプする命令を生成します。default CodeBuilder
transforming
(CodeTransform transform, Consumer<CodeBuilder> handler) ハンドラによって構築されたコードに変換を適用し、結果をこのビルダーに指示します。default CodeBuilder
trying
(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
- スイッチ・ケース- 戻り値:
- このビルダー
- 関連項目:
-