protected MethodInfo createCallStub(String originator, int id) { MethodInfo mi = new MethodInfo(id); String cname = ci.getName(); Instruction insn; mi.name = originator + name; // + cname; // could maybe also include the called method, but keep it fast mi.signature = "()V"; mi.maxLocals = isStatic() ? 0 : 1; mi.maxStack = getNumberOfCallerStackSlots(); // <2do> cache for optimization mi.localVariableNames = EMPTY; mi.localVariableTypes = EMPTY; mi.lineNumbers = null; mi.exceptions = null; mi.thrownExceptionClassNames = null; mi.uniqueName = mi.name; // createAndInitialize the code CodeBuilder cb = mi.getCodeBuilder(); if (isStatic()) { mi.modifiers |= Modifier.STATIC; if (isClinit()) { insn = insnFactory.create(null, INVOKECLINIT.OPCODE); } else { insn = insnFactory.create(null, Constants.INVOKESTATIC); } } else if (name.equals("<init>")) { insn = insnFactory.create(null, Constants.INVOKESPECIAL); } else { insn = insnFactory.create(null, Constants.INVOKEVIRTUAL); } ((InvokeInstruction) insn).setInvokedMethod(cname, name, signature); cb.append(insn); insn = insnFactory.create(null, Constants.RETURN); cb.append(insn); cb.setCode(); return mi; }