Yes, I think, it will be easily achieved using AOP.

-----Original Message-----
From: Ishaaq Chandy [mailto:[EMAIL PROTECTED]
Sent: Wednesday, June 18, 2003 8:54 AM
To: BCEL Users List
Subject: Re: help with the bcel


Isn't something like this more easily implemented
using AspectJ (http://www.eclipse.org/aspectj)?


--- kalyan ram <[EMAIL PROTECTED]> wrote:
> Hai
>      I am trying to write a program using bcel api
> such the before every method first statement,an
> object
> call abc will be created and it will call a method
> runCode().
>      class Test
>       {
>             public static void main()
>             {
>                Instrument abc = new Instrument();
>                 abc.runCode();
>              }
>        }
> I followed  the sample HelloWorldBuilder.java
> program
> but I am getting verifier error saying Illegal
> constant pool index.I have the Instrument.class
> which
> has runCode method in the same directory as Test
> class.
> The code is enclosed -  the following code executes
> for every method.
> /////////////////////////////////////////////
> InstructionFactory factory = new
> InstructionFacto(cg);
> InstructionList il = new InstructionList();
> // create instrumentor object and store it in local
> variable abc
> il.append(factory.createNew("Instrument"));
> il.append(InstructionConstants.DUP);
> //call instrumentor
>
il.append(factory.createInvoke("Instrument","<init>",Type.VOID,Type.NO_ARGS,
Constants.INVOKESPECIAL));
>
> //create a local variable
> LocalVariableGen lg = mg.addLocalVariable("abc",new
> ObjectType("Instrument"),null,null);
> int abc = lg.getIndex();
> //il.append(InstructionConstants.ACONST_NULL);
> lg.setStart(il.append(new ASTORE(abc))); //abc
> should
> be available from here
>
>  il.append(new ALOAD(abc));
>
>
il.append(factory.createInvoke("Instrument","runCode",Type.VOID,Type.NO_ARGS
,Constants.INVOKEVIRTUAL));
> InstructionList il1  = mg.getInstructionList();
> InstructionHandle[] ihs =
> il1.getInstructionHandles();
>
> /* Instrument method start */
>  il1.insert(ihs[0],il);
> /////////////////////////////////////////////////
> What all i am trying to do is:
> Instrument abc = new Instrument();
> abc.runCode();
> at the beginning of evry method.
>
> The error is :
> Exception in thread "main" java.lang.VerifyError:
> (class: Test, method: main signature:
> ([Ljava/lang/String;)V) Illegal
> type in constant pool
>
> I am really stuck at this...Please help me out.Your
> help is highly appreciated.
>
> Thank you
> Ram
>
> __________________________________
> Do you Yahoo!?
> SBC Yahoo! DSL - Now only $29.95 per month!
> http://sbc.yahoo.com
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
>


__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

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


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

Reply via email to