Каков синтаксис инструкции вставки IFEQ и RETURN в BCEL?
Учитывая следующий метод:
public static boolean check(String name){
return true;
}
Я хочу добавить инструкцию, если returns true
только если имя равно bcel, т.е.
public static boolean check(String name){
if(name.equals("bcel"))
return true;
return false;
}
Я знаю, что я должен использовать IFEQ
, IRETURN
а также ICONST_0
... но я не знаю точный синтаксис.
Вот часть метода, который я пытаюсь завершить:
for (h=il.getStart(); h!=il.getEnd();h=h.getNext()) // il: InstructionList, h: InstructionHandle
{
Instruction inst = h.getInstruction();
il.insert(h,InstructionFactory.ICONST_0);
il.insert(h,InstructionFactory.IRETURN);
..
..
try{
h=h.getNext();
}
catch(Exception e){}}
Помогите, пожалуйста.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
Байт-код первого кода:
iconst_1
ireturn
Байт-код второго кода:
aload_0
ldc #2<bcel>
invokevirtual #3<java/lang/Sting/equals(<java/lang/object;)z>
ifeq 11 (+5)
iconst_1
ireturn
iconst_0
ireturn