1. Don't use index 2 to store the stack size
2. IndexedInstruction.setIndex
3. InstructionHandle.setInstruction
4. InstructionList.redirectBranches/redirectExceptionHandlers/redirectLocalVariables
5. Don't use index 2 to store the stack size :)
Camila Rocha wrote:
Hello, it's me again... :)
I'm modifiying a method push of a stack (in a .class archive) to include a post condition on it: I want to know if the stack.size = [EMAIL PROTECTED] + 1. To check this condition at the end of the method, I have to keep the initial value of stack.size. So, I created a local variable to keep the value:
InstructionHandle ih_3 = il.append(ih_2, factory.createStore(Type.INT, 2));
The problem is that, the code of the method uses this position (2). Translated with BCELifier:
InstructionHandle ih_13 = il.append(_factory.createStore(Type.OBJECT, 2));
InstructionHandle ih_14 = il.append(_factory.createLoad(Type.OBJECT, 2));
So, at the end, when I want to know the initial value of the stack size, it isn't there anymore. I tried to delete this ih_13 and ih_14 and include again, using the position 3. But it not possible, because the error "Target Lost Exception"
What can I do?
Thanks, Camila
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
