jakarta-bcel-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Johan Kumps" <johan.ku...@pandora.be>
Subject JavaClassFileOutputException: Stack underflow
Date Thu, 15 Jul 2004 11:25:43 GMT
Hi all,

I'm trying to insert some code in the constructor of certain classes. The code should be getting
the current singleton instance of a class 'MySingleton' and call a method 'myMethod' on this
instance. My code is as follows :

InstructionList il = mg.getInstructionList();         
il.insert(factory.createInvoke("MySingleTon", "getInstance", new ObjectType("MySingleton"),
Type.NO_ARGS, Constants.INVOKESTATIC));
il.insert(InstructionFactory.createLoad(Type.OBJECT, 0));
il.insert(factory.createInvoke("java.lang.Object", "getClass", new ObjectType("java.lang.Class"),
Type.NO_ARGS, Constants.INVOKEVIRTUAL));
il.insert(factory.createInvoke("java.lang.Class", "getName", Type.STRING, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
il.insert(InstructionConstants.ACONST_NULL);
il.insert(factory.createInvoke("MySingleton", "myMethod", Type.VOID, new Type[] { Type.STRING,
new ObjectType("MyObject") }, Constants.INVOKEVIRTUAL));
            
mg.setInstructionList(il);
mg.setMaxStack();

When I decompile the patched class the method to which I inserted the code has dissapeared
and the following line is added in place :

// JavaClassFileOutputException: Stack underflow

Does anybody has an idea of what I'm doing wrong? Can you provide me a code sample doing something
like I want to achieve?

Kind regards,

Johan,



---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-user-help@jakarta.apache.org


Mime
View raw message