blob: 87181edf6de67d35b1b5a401fba23c84d8c72a47 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package javassist.convert;
import javassist.CtMethod;
import javassist.bytecode.BadBytecode;
import javassist.bytecode.CodeIterator;
import javassist.bytecode.ConstPool;
import javassist.bytecode.Descriptor;
import javassist.bytecode.Opcode;
public class TransformCallToStatic extends TransformCall {
public TransformCallToStatic(Transformer next, CtMethod origMethod, CtMethod substMethod) {
super(next, origMethod, substMethod);
methodDescriptor = origMethod.getMethodInfo2().getDescriptor();
}
@Override
protected int match(int c, int pos, CodeIterator iterator, int typedesc, ConstPool cp) {
if (newIndex == 0) {
String desc = Descriptor.insertParameter(classname, methodDescriptor);
int nt = cp.addNameAndTypeInfo(newMethodname, desc);
int ci = cp.addClassInfo(newClassname);
newIndex = cp.addMethodrefInfo(ci, nt);
constPool = cp;
}
iterator.writeByte(Opcode.INVOKESTATIC, pos);
iterator.write16bit(newIndex, pos + 1);
return pos;
}
}
|