public static MethodReference makeMethodReference(Language l, String methodSig) throws IllegalArgumentException { if (methodSig == null) { throw new IllegalArgumentException("methodSig is null"); } if (methodSig.lastIndexOf('.') < 0) { throw new IllegalArgumentException("ill-formed sig " + methodSig); } String type = methodSig.substring(0, methodSig.lastIndexOf('.')); type = deployment2CanonicalTypeString(type); TypeReference t = TypeReference.findOrCreate(ClassLoaderReference.Application, type); String methodName = methodSig.substring(methodSig.lastIndexOf('.') + 1, methodSig.indexOf('(')); String desc = methodSig.substring(methodSig.indexOf('(')); return MethodReference.findOrCreate(l, t, methodName, desc); }
/** * @param methodSig something like "java_cup.lexer.advance()V" * @throws IllegalArgumentException if methodSig is null */ public static MethodReference makeMethodReference(String methodSig) throws IllegalArgumentException { return makeMethodReference(Language.JAVA, methodSig); }
public static TypeName findOrCreate(ImmutableByteArray name, int start, int length) throws IllegalArgumentException { Atom className = Atom.findOrCreate(StringStuff.parseForClass(name, start, length)); ImmutableByteArray p = StringStuff.parseForPackage(name, start, length); Atom packageName = (p == null) ? null : Atom.findOrCreate(p); int dim = StringStuff.parseForArrayDimensionality(name, start, length); boolean innermostPrimitive = StringStuff.classIsPrimitive(name, start, length); if (innermostPrimitive) { if (dim == 0) { dim = -1; } else { dim <<= ElementBits; dim |= PrimitiveMask; } } TypeNameKey t = new TypeNameKey(packageName, className, dim); return findOrCreate(t); }
readable = new StringBuilder(slashToDot(readable.toString())); readable = new StringBuilder(dollarToDot(readable.toString()));
if (parseForPackage(name, start, length) == null) { while (isTypeCodeChar(name, start)) { start++; length--;
int code = 0; for (int i = start; i < start + length; ++i) { if (isTypeCodeChar(b, i)) { code <<= ElementBits; switch (b.b[i]) {
if (instructions[j] != null) { StringBuilder x = new StringBuilder(j + " " + instructions[j].toString(ir.getSymbolTable())); StringStuff.padWithSpaces(x, 35); result.append(x); result.append("\\l");
/** * Given that name[start:start+length] is a Type name in JVM format, strip the package and return the "package-free" class name * * @return an ImmutableByteArray that represents the package, or null if it's the unnamed package * @throws IllegalArgumentException if name is null */ public static ImmutableByteArray parseForClass(ImmutableByteArray name) throws IllegalArgumentException { if (name == null) { throw new IllegalArgumentException("name is null"); } return parseForClass(name, 0, name.length()); }
/** * Parse an array descriptor to obtain number of dimensions in corresponding array type. b: descriptor - something like * "[Ljava/lang/String;" or "[[I" * * @return dimensionality - something like "Ljava/lang/String;" or "I" * @throws IllegalArgumentException if a is null */ public static ImmutableByteArray parseForInnermostArrayElementDescriptor(Atom a) { if (a == null) { throw new IllegalArgumentException("a is null"); } ImmutableByteArray b = new ImmutableByteArray(a.getValArray()); return parseForInnermostArrayElementDescriptor(b, 0, b.length()); }
String baseType = dString.substring(0, arrayIndex); int dim = (dString.length() - arrayIndex) / 2; baseType = deployment2CanonicalDescriptorTypeString(baseType); StringBuilder result = new StringBuilder("["); for (int i = 1; i < dim; i++) {
int code = 0; for (int i = start; i < start + length; ++i) { if (isTypeCodeChar(b, i)) { code <<= ElementBits; switch (b.b[i]) {
if (parseForPackage(name, start, length) == null) { while (isTypeCodeChar(name, start)) { start++; length--;
readable = new StringBuilder(slashToDot(readable.toString())); readable = new StringBuilder(dollarToDot(readable.toString()));
if (instructions[j] != null) { StringBuilder x = new StringBuilder(j + " " + instructions[j].toString(ir.getSymbolTable())); StringStuff.padWithSpaces(x, 35); result.append(x); result.append("\\l");
/** * Given that name[start:start+length] is a Type name in JVM format, strip the package and return the "package-free" class name * * @return an ImmutableByteArray that represents the package, or null if it's the unnamed package * @throws IllegalArgumentException if name is null */ public static ImmutableByteArray parseForClass(ImmutableByteArray name) throws IllegalArgumentException { if (name == null) { throw new IllegalArgumentException("name is null"); } return parseForClass(name, 0, name.length()); }
/** * Parse an array descriptor to obtain number of dimensions in corresponding array type. b: descriptor - something like * "[Ljava/lang/String;" or "[[I" * * @return dimensionality - something like "Ljava/lang/String;" or "I" * @throws IllegalArgumentException if a is null */ public static ImmutableByteArray parseForInnermostArrayElementDescriptor(Atom a) { if (a == null) { throw new IllegalArgumentException("a is null"); } ImmutableByteArray b = new ImmutableByteArray(a.getValArray()); return parseForInnermostArrayElementDescriptor(b, 0, b.length()); }
String baseType = dString.substring(0, arrayIndex); int dim = (dString.length() - arrayIndex) / 2; baseType = deployment2CanonicalDescriptorTypeString(baseType); StringBuilder result = new StringBuilder("["); for (int i = 1; i < dim; i++) {
/** * @param methodSig something like "java_cup.lexer.advance()V" * @throws IllegalArgumentException if methodSig is null */ public static MethodReference makeMethodReference(String methodSig) throws IllegalArgumentException { return makeMethodReference(Language.JAVA, methodSig); }
public static MethodReference makeMethodReference(Language l, String methodSig) throws IllegalArgumentException { if (methodSig == null) { throw new IllegalArgumentException("methodSig is null"); } if (methodSig.lastIndexOf('.') < 0) { throw new IllegalArgumentException("ill-formed sig " + methodSig); } String type = methodSig.substring(0, methodSig.lastIndexOf('.')); type = deployment2CanonicalTypeString(type); TypeReference t = TypeReference.findOrCreate(ClassLoaderReference.Application, type); String methodName = methodSig.substring(methodSig.lastIndexOf('.') + 1, methodSig.indexOf('(')); String desc = methodSig.substring(methodSig.indexOf('(')); return MethodReference.findOrCreate(l, t, methodName, desc); }
public static TypeName findOrCreate(ImmutableByteArray name, int start, int length) throws IllegalArgumentException { Atom className = Atom.findOrCreate(StringStuff.parseForClass(name, start, length)); ImmutableByteArray p = StringStuff.parseForPackage(name, start, length); Atom packageName = (p == null) ? null : Atom.findOrCreate(p); int dim = StringStuff.parseForArrayDimensionality(name, start, length); boolean innermostPrimitive = StringStuff.classIsPrimitive(name, start, length); if (innermostPrimitive) { if (dim == 0) { dim = -1; } else { dim <<= ElementBits; dim |= PrimitiveMask; } } TypeNameKey t = new TypeNameKey(packageName, className, dim); return findOrCreate(t); }