I'm trying to get the target of a branch instruction, but it always gives me a null
instruction handle.  The code is very simple:

int fnd = (-1);
JavaClass       clazz   = Repository.lookupClass("test");
Method[]        methods = clazz.getMethods();
// find method "hello"
for(int i = 0;i < methods.length;i++) {
         System.out.println("Method[" + i + "] = " + methods[i]);
         String s = methods[i].getName();
         System.out.println("Name is " + s);
         if ( s.equals("hello") ) fnd = i;
        }
if ( fnd >= 0 ) {
   ConstantPool cp = clazz.getConstantPool();
   methods[fnd].setConstantPool(cp);  // try setting constant pool
   Code c = methods[fnd].getCode();
   c.setConstantPool(cp);  // try again
   byte[] b = c.getCode();
   InstructionList il = new InstructionList(b);
   il.setPositions(true);
   Instruction ii[] = il.getInstructions();
   for(int w=0;w<ii.length;w++) {
         System.out.println("Instruction[" + w + "] = " + ii[w]);
         if ( ii[w] instanceof BranchInstruction ) {
InstructionHandle ih = ((BranchInstruction)(ii[w])).getTarget();
              if ( ih != null )
                    System.out.println("   Branch " + ih.getPosition());
         }
    }
}

and yet it fails every time. Clearly I am doing something wrong. Can someone please
give me a clue?

Thanks,

Mark




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to