You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-user@jakarta.apache.org by Camila Rocha <ca...@hotmail.com> on 2004/02/19 15:40:21 UTC

InstructionList.delete - it didn't work

Hi! 

I'm still in trouble. The problem is that I have to modify an existing class, so there is some variables that I can't control... 
The description of the problem 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 = stack@pre.size + 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" 


I'm sendig the code to you, if helps. I want to modify the class "Pilha", method "adicionaPar". The class "Testador" modifies it, and the class "AcessoPilha" is the "main method". There is BCELlifier to, if you want to generate the BCEL code. It creates the file "pilhaBCEL.java".

Thanks again!

Camila