I want to view arguments for method calls. So if I call foo:
x = 4;
y = 5;
...
foo(x, y, 20, 25);
I want to print the arguments(4,5,20,25) I understand these arguments are pushed onto the stack before the method is invoked. How do I get the value(if initialized or a constant) from the method's local variable array?
visitVarInsn() and VarInsnNode do not have a way to lookup the actual value from the array.
Do I need to use an Analyzer and Interpreter to do this, or is there an easier way?
EDIT: Figured out how to do this. I modified BasicValue and BasicInterpreter to account for bytecode instruction arguments. So Values representing instructions like BIPUSH contain information about the value being pushed, instead of only type information. Frames are examined the same way with an Analyzer