クラスの使用
org.springframework.asm.MethodVisitor
パッケージ
説明
ASM 9.x の Spring の再パッケージ化(Spring 固有のパッチを使用。内部使用のみ)。
Spring の CGLIB コアパッケージの再パッケージ化(内部使用のみ)。
Spring による CGLIB 変換パッケージの再パッケージ化 (内部使用のみ)。
Spring アプリケーションコンテキスト内の式解析サポート。
SpEL の中央実装パッケージ。
SpEL の抽象構文ツリー。
さまざまなコア抽象化のための SpEL のデフォルト実装。
org.springframework.asm 内の MethodVisitor 使用
修飾子と型メソッド説明MethodVisitor.getDelegate()
このビジターがメソッド呼び出しを委譲する必要があるメソッドビジター。ClassVisitor.visitMethod
(int access, StringSE name, StringSE descriptor, StringSE signature, StringSE[] exceptions) クラスのメソッドを訪問します。final MethodVisitor
ClassWriter.visitMethod
(int access, StringSE name, StringSE descriptor, StringSE signature, StringSE[] exceptions) 修飾子コンストラクター説明protected
MethodVisitor
(int api, MethodVisitor methodVisitor) 新しいMethodVisitor
を構築します。org.springframework.cglib.core 内の MethodVisitor 使用
修飾子と型メソッド説明ClassEmitter.visitMethod
(int access, StringSE name, StringSE desc, StringSE signature, StringSE[] exceptions) org.springframework.cglib.transform 内の MethodVisitor 使用
修飾子と型メソッド説明AbstractClassFilterTransformer.visitMethod
(int access, StringSE name, StringSE desc, StringSE signature, StringSE[] exceptions) ClassTransformerChain.visitMethod
(int access, StringSE name, StringSE desc, StringSE signature, StringSE[] exceptions) ClassVisitorTee.visitMethod
(int access, StringSE name, StringSE desc, StringSE signature, StringSE[] exceptions) MethodFilterTransformer.visitMethod
(int access, StringSE name, StringSE desc, StringSE signature, StringSE[] exceptions) org.springframework.context.expression 内の MethodVisitor 使用
org.springframework.expression.spel 内の MethodVisitor 使用
修飾子と型メソッド説明void
CodeFlow.ClinitAdder.generateCode
(MethodVisitor mv, CodeFlow codeflow) void
CompilablePropertyAccessor.generateCode
(StringSE propertyName, MethodVisitor methodVisitor, CodeFlow codeFlow) バイトコードを生成し、必要に応じてCodeFlow
からのコンテキスト情報を使用して、指定されたMethodVisitor
へのアクセス操作を実行します。static void
CodeFlow.insertAnyNecessaryTypeConversionBytecodes
(MethodVisitor mv, char targetDescriptor, StringSE stackDescriptor) スタックの内容と目的のターゲット型に基づいて、必要な数値変換バイトコードを挿入します。static void
CodeFlow.insertArrayStore
(MethodVisitor mv, StringSE arrayElementType) スタック項目を配列に格納するための適切なバイトコードを生成します。static void
CodeFlow.insertBoxIfNecessary
(MethodVisitor mv, char ch) 特定の型に適切なボクシング指示を決定し(ボクシングが必要な場合)、指示を提供されたビジターに挿入します。static void
CodeFlow.insertBoxIfNecessary
(MethodVisitor mv, StringSE descriptor) 特定の型に適切なボクシング指示を決定し(ボクシングが必要な場合)、指示を提供されたビジターに挿入します。static void
CodeFlow.insertCheckCast
(MethodVisitor mv, StringSE descriptor) 提供された記述子に適切な CHECKCAST 命令を挿入します。static void
CodeFlow.insertNewArrayCode
(MethodVisitor mv, int size, StringSE arrayType) 正しいバイトコードを生成して配列を構築します。static void
CodeFlow.insertNumericUnboxOrPrimitiveTypeCoercion
(MethodVisitor mv, StringSE stackDescriptor, char targetDescriptor) 数学演算子で使用するために、スタック上の(おそらくボックス化された)数値からプリミティブ数値型への変換を処理します。static void
CodeFlow.insertOptimalLoad
(MethodVisitor mv, int value) スタックに数値をロードするための最適な命令を作成します。static void
CodeFlow.insertUnboxInsns
(MethodVisitor mv, char ch, StringSE stackDescriptor) ボックス型からプリミティブ値に変換するために必要なキャストと値の呼び出しを挿入します。static void
CodeFlow.insertUnboxNumberInsns
(MethodVisitor mv, char targetDescriptor, StringSE stackDescriptor) 数値の場合は、適切なメソッドを使用して、リクエストされたプリミティブ型に変換します。void
CodeFlow.loadEvaluationContext
(MethodVisitor mv) バイトコードをプッシュして EvaluationContext(コンパイルされた式メソッドに渡される 2 番目のパラメーター)をロードします。void
CodeFlow.loadTarget
(MethodVisitor mv) バイトコードをプッシュしてターゲットをロードします(つまりvoid
CodeFlow.unboxBooleanIfNecessary
(MethodVisitor mv) コードフローが java.lang.Boolean に評価された最後の式を示している場合は、必要な命令を挿入して、ブールプリミティブにボックス化します。org.springframework.expression.spel.ast 内の MethodVisitor 使用
修飾子と型メソッド説明void
BooleanLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
CompoundExpression.generateCode
(MethodVisitor mv, CodeFlow cf) void
ConstructorReference.generateCode
(MethodVisitor mv, CodeFlow cf) void
Elvis.generateCode
(MethodVisitor mv, CodeFlow cf) void
FloatLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
FunctionReference.generateCode
(MethodVisitor mv, CodeFlow cf) void
Indexer.generateCode
(MethodVisitor mv, CodeFlow cf) void
InlineList.generateCode
(MethodVisitor mv, CodeFlow codeflow) void
IntLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
LongLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
MethodReference.generateCode
(MethodVisitor mv, CodeFlow cf) void
NullLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpAnd.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpDivide.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpEQ.generateCode
(MethodVisitor mv, CodeFlow cf) void
OperatorInstanceof.generateCode
(MethodVisitor mv, CodeFlow cf) void
OperatorNot.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpGE.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpGT.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpLE.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpLT.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpMinus.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpModulus.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpMultiply.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpNE.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpOr.generateCode
(MethodVisitor mv, CodeFlow cf) void
OpPlus.generateCode
(MethodVisitor mv, CodeFlow cf) void
PropertyOrFieldReference.generateCode
(MethodVisitor mv, CodeFlow cf) void
RealLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
SpelNodeImpl.generateCode
(MethodVisitor mv, CodeFlow cf) このノードのバイトコードを提供されたビジターに生成します。void
StringLiteral.generateCode
(MethodVisitor mv, CodeFlow cf) void
Ternary.generateCode
(MethodVisitor mv, CodeFlow cf) void
TypeReference.generateCode
(MethodVisitor mv, CodeFlow cf) void
VariableReference.generateCode
(MethodVisitor mv, CodeFlow cf) protected static void
SpelNodeImpl.generateCodeForArgument
(MethodVisitor mv, CodeFlow cf, SpelNodeImpl argument, StringSE paramDesc) 引数を求めてバイトコードを生成し、その後、ボクシング / アンボクシング / チェックキャストを実行して、期待されるパラメーター記述子と一致することを確認します。protected static void
SpelNodeImpl.generateCodeForArguments
(MethodVisitor mv, CodeFlow cf, MemberSE member, SpelNodeImpl[] arguments) 指定されたメソッドの引数値の構築を処理するコードを生成します。protected void
Operator.generateComparisonCode
(MethodVisitor mv, CodeFlow cf, int compInstruction1, int compInstruction2) 数値比較演算子は非常によく似た生成コードを共有し、2 つの比較命令のみが異なります。org.springframework.expression.spel.support 内の MethodVisitor 使用
修飾子と型メソッド説明void
ReflectivePropertyAccessor.OptimalPropertyAccessor.generateCode
(StringSE propertyName, MethodVisitor mv, CodeFlow cf)