/** * Returns the static initializer defined in this class or null if there * isn't one. */ public MethodInfo getInitializer() { int size = mMethods.size(); for (int i=0; i<size; i++) { MethodInfo method = mMethods.get(i); if ("<clinit>".equals(method.getName())) { return method; } } return null; }
/** * Returns all the constructors defined in this class. */ public MethodInfo[] getConstructors() { int size = mMethods.size(); List<MethodInfo> ctorsOnly = new ArrayList<MethodInfo>(size); for (int i=0; i<size; i++) { MethodInfo method = mMethods.get(i); if ("<init>".equals(method.getName())) { ctorsOnly.add(method); } } return ctorsOnly.toArray(new MethodInfo[ctorsOnly.size()]); }
/** * Returns all the methods defined in this class, not including * constructors and static initializers. */ public MethodInfo[] getMethods() { int size = mMethods.size(); List<MethodInfo> methodsOnly = new ArrayList<MethodInfo>(size); for (int i=0; i<size; i++) { MethodInfo method = mMethods.get(i); String name = method.getName(); if (!"<init>".equals(name) && !"<clinit>".equals(name)) { methodsOnly.add(method); } } return methodsOnly.toArray(new MethodInfo[methodsOnly.size()]); }
public String toString() { String str = mDesc.toMethodSignature(getName(), mModifiers.isVarArgs()); String modStr = mModifiers.toString(); if (modStr.length() > 0) { str = modStr + ' ' + str; } return str; }
for (int i=0; i<methods.length; i++) { MethodInfo method = methods[i]; if ("define".equals(method.getName())) { if (defineMethod != null) { throw new IllegalArgumentException("Multiple define methods found");
void set(ConstantPool cp, MethodInfo info) { TypeDesc[] paramTypes = info.getMethodDescriptor().getParameterTypes(); VerificationTypeInfo[] infos; int offset; if (info.getModifiers().isStatic()) { infos = new VerificationTypeInfo[paramTypes.length]; offset = 0; } else { infos = new VerificationTypeInfo[1 + paramTypes.length]; if (info.getName().equals("<init>")) { infos[0] = UninitThisVariableInfo.THE; } else { infos[0] = VerificationTypeInfo.forType(cp, info.getClassFile().getType()); } offset = 1; } for (int i=0; i<paramTypes.length; i++) { infos[offset + i] = VerificationTypeInfo.forType(cp, paramTypes[i]); } mLocalInfos = infos; } }
private void disassemble(MethodInfo mi) { print("MethodInfo mi = cf.add"); if (mi.getName().equals("<clinit>")) { println("Initializer();"); } else if (mi.getName().equals("<init>")) { print("Constructor("); printModifiers(mi); printModifiers(mi); print(", "); print("\"" + escape(mi.getName()) + "\", "); print(mi.getMethodDescriptor().getReturnType()); print(", ");
/** * Returns the static initializer defined in this class or null if there * isn't one. */ public MethodInfo getInitializer() { int size = mMethods.size(); for (int i=0; i<size; i++) { MethodInfo method = mMethods.get(i); if ("<clinit>".equals(method.getName())) { return method; } } return null; }
/** * Returns all the constructors defined in this class. */ public MethodInfo[] getConstructors() { int size = mMethods.size(); List<MethodInfo> ctorsOnly = new ArrayList<MethodInfo>(size); for (int i=0; i<size; i++) { MethodInfo method = mMethods.get(i); if ("<init>".equals(method.getName())) { ctorsOnly.add(method); } } return ctorsOnly.toArray(new MethodInfo[ctorsOnly.size()]); }
/** * Returns all the methods defined in this class, not including * constructors and static initializers. */ public MethodInfo[] getMethods() { int size = mMethods.size(); List<MethodInfo> methodsOnly = new ArrayList<MethodInfo>(size); for (int i=0; i<size; i++) { MethodInfo method = mMethods.get(i); String name = method.getName(); if (!"<init>".equals(name) && !"<clinit>".equals(name)) { methodsOnly.add(method); } } return methodsOnly.toArray(new MethodInfo[methodsOnly.size()]); }
public String toString() { String str = mDesc.toMethodSignature(getName(), mModifiers.isVarArgs()); String modStr = mModifiers.toString(); if (modStr.length() > 0) { str = modStr + ' ' + str; } return str; }
for (int i=0; i<methods.length; i++) { MethodInfo method = methods[i]; if ("define".equals(method.getName())) { if (defineMethod != null) { throw new IllegalArgumentException("Multiple define methods found");
void set(ConstantPool cp, MethodInfo info) { TypeDesc[] paramTypes = info.getMethodDescriptor().getParameterTypes(); VerificationTypeInfo[] infos; int offset; if (info.getModifiers().isStatic()) { infos = new VerificationTypeInfo[paramTypes.length]; offset = 0; } else { infos = new VerificationTypeInfo[1 + paramTypes.length]; if (info.getName().equals("<init>")) { infos[0] = UninitThisVariableInfo.THE; } else { infos[0] = VerificationTypeInfo.forType(cp, info.getClassFile().getType()); } offset = 1; } for (int i=0; i<paramTypes.length; i++) { infos[offset + i] = VerificationTypeInfo.forType(cp, paramTypes[i]); } mLocalInfos = infos; } }
assembler.invokeConstructor(paramTypes); } else { if ("<init>".equals(mMethod.getName()) && className.equals(mSuperClassName)) { assembler.invokeSuperConstructor(paramTypes);
private void disassemble(MethodInfo mi) { print("MethodInfo mi = cf.add"); if (mi.getName().equals("<clinit>")) { println("Initializer();"); } else if (mi.getName().equals("<init>")) { print("Constructor("); printModifiers(mi); printModifiers(mi); print(", "); print("\"" + escape(mi.getName()) + "\", "); print(mi.getMethodDescriptor().getReturnType()); print(", ");