You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TransformCallToStatic.java 1.0KB

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