List of usage examples for org.objectweb.asm Type METHOD
int METHOD
To view the source code for org.objectweb.asm Type METHOD.
Click Source Link
From source file:com.android.build.gradle.shrinker.DependencyFinderVisitor.java
License:Apache License
/** * Extracts a dependency target from a {@link Type} object. Ignores SDK classes. * * @param type A {@link Type} object, encountered by the visitor. Cannot be of sort METHOD. * @return If the {@link Type} is for a class or an object array, the internal name of that * class. Null if the that class is an SDK class. * @see AbstractShrinker#isSdkPackage(String) *//*from w ww .j a va 2s. co m*/ @Nullable private static String getTargetClassName(Type type) { switch (type.getSort()) { case Type.VOID: case Type.SHORT: case Type.INT: case Type.LONG: case Type.FLOAT: case Type.BOOLEAN: case Type.BYTE: case Type.DOUBLE: case Type.CHAR: return null; case Type.ARRAY: return getTargetClassName(type.getElementType()); case Type.OBJECT: String name = type.getInternalName(); return isSdkPackage(name) ? null : name; case Type.METHOD: throw new IllegalArgumentException("Can't extract one class from a METHOD Type."); default: throw new AssertionError("Unknown Type sort " + type.getSort()); } }
From source file:com.android.builder.shrinker.DependencyFinderVisitor.java
License:Apache License
@Nullable private static String getClassName(Type type) { switch (type.getSort()) { case Type.VOID: case Type.METHOD: case Type.SHORT: case Type.INT: case Type.LONG: case Type.FLOAT: case Type.BOOLEAN: case Type.BYTE: case Type.DOUBLE: case Type.CHAR: return null; case Type.ARRAY: return getClassName(type.getElementType()); case Type.OBJECT: return type.getInternalName(); default:/*from w w w . java2 s .c om*/ throw new IllegalStateException(); } }
From source file:com.codename1.tools.translator.bytecodes.Ldc.java
License:Open Source License
public String getValueAsString() { StringBuilder b = new StringBuilder(); if (cst instanceof Integer) { //b.append("PUSH_INT("); b.append(((Number) cst).intValue()); //b.append("); /* LDC */\n"); } else if (cst instanceof Float) { Float f = (Float) cst; //b.append("PUSH_FLOAT("); if (f.isInfinite()) { if (f.floatValue() > 0) { b.append("1.0f / 0.0f"); } else { b.append("-1.0f / 0.0f"); }/*from www. j av a2 s. c o m*/ } else { if (f.isNaN()) { b.append("0.0/0.0"); } else { b.append(f.floatValue()); } } //b.append("); /* LDC */\n"); } else if (cst instanceof Long) { //b.append("PUSH_LONG("); if (((Number) cst).longValue() == Long.MIN_VALUE) { // min value in C is 1 less (more really) b.append("LLONG_MIN"); } else { b.append(((Number) cst).longValue()).append("LL"); } //b.append("LL); /* LDC */\n"); } else if (cst instanceof Double) { Double d = (Double) cst; //b.append("PUSH_DOUBLE("); if (d.isInfinite()) { if (d.floatValue() > 0) { b.append("1.0 / 0.0"); } else { b.append("-1.0 / 0.0"); } } else { if (d.isNaN()) { b.append("0.0/0.0"); } else { b.append(d.doubleValue()); } } //b.append("); /* LDC */\n"); } else if (cst instanceof String) { //b.append("/* LDC: '"); //b.append(((String)cst).replace('\n', ' ').replace("*/", "*\\/")); //b.append("'*/\n PUSH_POINTER(STRING_FROM_CONSTANT_POOL_OFFSET("); b.append("STRING_FROM_CONSTANT_POOL_OFFSET("); b.append(Parser.addToConstantPool((String) cst)); b.append(")"); //b.append("));\n"); } else if (cst instanceof Type) { // TODO... int sort = ((Type) cst).getSort(); Type tp = (Type) cst; if (sort == Type.OBJECT) { //b.append("/* LDC: '"); //b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); //b.append("'*/\n PUSH_POINTER((JAVA_OBJECT)&class__"); //b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); //b.append(");\n"); b.append("(JAVA_OBJECT)&class__"); b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); } else if (sort == Type.ARRAY) { //b.append("/* LDC Array: '"); //b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); //b.append("'*/\n PUSH_POINTER((JAVA_OBJECT)&class_array"); b.append("(JAVA_OBJECT)&class_array"); b.append(tp.getDimensions()); b.append("__"); Type ttt = tp.getElementType(); switch (ttt.getSort()) { case Type.BOOLEAN: b.append("JAVA_BOOLEAN"); break; case Type.BYTE: b.append("JAVA_BYTE"); break; case Type.CHAR: b.append("JAVA_CHAR"); break; case Type.DOUBLE: b.append("JAVA_DOUBLE"); break; case Type.FLOAT: b.append("JAVA_FLOAT"); break; case Type.INT: b.append("JAVA_INT"); break; case Type.LONG: b.append("JAVA_LONG"); break; case Type.SHORT: b.append("JAVA_SHORT"); break; default: b.append(ttt.getInternalName().replace('/', '_').replace('$', '_')); break; } //b.append(");\n"); } else if (sort == Type.METHOD) { b.append("/* UNKNOWN CST type internal: "); b.append(tp.getInternalName()); b.append(" */"); } else { b.append("/* UNKNOWN CST type internal: "); b.append(tp.getInternalName()); b.append(" */"); } } else if (cst instanceof Handle) { //((Handle)cst). b.append("/* UNKNOWN CST type: "); b.append(cst.getClass().getName()); b.append(" */"); } return b.toString(); }
From source file:com.codename1.tools.translator.bytecodes.Ldc.java
License:Open Source License
@Override public void appendInstruction(StringBuilder b) { b.append(" "); if (cst instanceof Integer) { b.append("PUSH_INT("); b.append(((Number) cst).intValue()); b.append("); /* LDC */\n"); } else if (cst instanceof Float) { Float f = (Float) cst; b.append("PUSH_FLOAT("); if (f.isInfinite()) { if (f.floatValue() > 0) { b.append("1.0f / 0.0f"); } else { b.append("-1.0f / 0.0f"); }//from ww w .j a v a 2 s .c o m } else { if (f.isNaN()) { b.append("0.0/0.0"); } else { b.append(f.floatValue()); } } b.append("); /* LDC */\n"); } else if (cst instanceof Long) { b.append("PUSH_LONG("); if (((Number) cst).longValue() == Long.MIN_VALUE) { // min value in C is 1 less (more really) b.append("LLONG_MIN"); } else { b.append(((Number) cst).longValue()).append("LL"); } b.append("); /* LDC */\n"); } else if (cst instanceof Double) { Double d = (Double) cst; b.append("PUSH_DOUBLE("); if (d.isInfinite()) { if (d.floatValue() > 0) { b.append("1.0 / 0.0"); } else { b.append("-1.0 / 0.0"); } } else { if (d.isNaN()) { b.append("0.0/0.0"); } else { b.append(d.doubleValue()); } } b.append("); /* LDC */\n"); } else if (cst instanceof String) { b.append("/* LDC: '"); b.append(((String) cst).replace('\n', ' ').replace("*/", "*\\/")); b.append("'*/\n PUSH_POINTER(STRING_FROM_CONSTANT_POOL_OFFSET("); b.append(Parser.addToConstantPool((String) cst)); b.append("));\n"); } else if (cst instanceof Type) { // TODO... int sort = ((Type) cst).getSort(); Type tp = (Type) cst; if (sort == Type.OBJECT) { b.append("/* LDC: '"); b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); b.append("'*/\n PUSH_POINTER((JAVA_OBJECT)&class__"); b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); b.append(");\n"); } else if (sort == Type.ARRAY) { b.append("/* LDC Array: '"); b.append(tp.getInternalName().replace('/', '_').replace('$', '_')); b.append("'*/\n PUSH_POINTER((JAVA_OBJECT)&class_array"); b.append(tp.getDimensions()); b.append("__"); Type ttt = tp.getElementType(); switch (ttt.getSort()) { case Type.BOOLEAN: b.append("JAVA_BOOLEAN"); break; case Type.BYTE: b.append("JAVA_BYTE"); break; case Type.CHAR: b.append("JAVA_CHAR"); break; case Type.DOUBLE: b.append("JAVA_DOUBLE"); break; case Type.FLOAT: b.append("JAVA_FLOAT"); break; case Type.INT: b.append("JAVA_INT"); break; case Type.LONG: b.append("JAVA_LONG"); break; case Type.SHORT: b.append("JAVA_SHORT"); break; default: b.append(ttt.getInternalName().replace('/', '_').replace('$', '_')); break; } b.append(");\n"); } else if (sort == Type.METHOD) { b.append("/* UNKNOWN CST type internal: "); b.append(tp.getInternalName()); b.append(" */"); } else { b.append("/* UNKNOWN CST type internal: "); b.append(tp.getInternalName()); b.append(" */"); } } else if (cst instanceof Handle) { //((Handle)cst). b.append("/* UNKNOWN CST type: "); b.append(cst.getClass().getName()); b.append(" */"); } }
From source file:com.devexperts.usages.ClassUsagesAnalyzer.java
License:Open Source License
private void markTypeUse(Type type, Member usedFrom, UseKind useKind) { if (type.getSort() == Type.METHOD) { markTypeUse(type.getReturnType(), usedFrom, UseKind.RETURN); for (Type arg : type.getArgumentTypes()) markTypeUse(arg, usedFrom, UseKind.ARGUMENT); return;/*from w ww.j a va 2 s.c om*/ } while (type.getSort() == Type.ARRAY) type = type.getElementType(); if (type.getSort() == Type.OBJECT) makeTypeUse(type.getClassName(), usedFrom, useKind); }
From source file:com.facebook.buck.jvm.java.abi.ClassReferenceTracker.java
License:Apache License
private void visitType(Type type) { switch (type.getSort()) { case Type.ARRAY: visitType(type.getElementType()); break;//from w w w . ja v a 2 s. c o m case Type.METHOD: visitType(type.getReturnType()); visitTypes(type.getArgumentTypes()); break; case Type.OBJECT: addReferencedClassName(type.getInternalName()); break; // $CASES-OMITTED default: // Others are primitives or void; don't care break; } }
From source file:com.gargoylesoftware.js.nashorn.internal.runtime.linker.JavaAdapterBytecodeGenerator.java
License:Open Source License
private static void boxStackTop(final InstructionAdapter mv, final Type t) { switch (t.getSort()) { case Type.BOOLEAN: invokeValueOf(mv, "Boolean", 'Z'); break;/*from w w w.j a v a2s.c o m*/ case Type.BYTE: case Type.SHORT: case Type.INT: // bytes and shorts get boxed as integers invokeValueOf(mv, "Integer", 'I'); break; case Type.CHAR: invokeValueOf(mv, "Character", 'C'); break; case Type.FLOAT: // floats get boxed as doubles mv.visitInsn(Opcodes.F2D); invokeValueOf(mv, "Double", 'D'); break; case Type.LONG: invokeValueOf(mv, "Long", 'J'); break; case Type.DOUBLE: invokeValueOf(mv, "Double", 'D'); break; case Type.ARRAY: case Type.METHOD: // Already boxed break; case Type.OBJECT: if (t.equals(OBJECT_TYPE)) { mv.invokestatic(SCRIPTUTILS_TYPE_NAME, "unwrap", UNWRAP_METHOD_DESCRIPTOR, false); } break; default: // Not expecting anything else (e.g. VOID) assert false; break; } }
From source file:com.geeksaga.light.profiler.util.ConstantPoolWrapper.java
License:Apache License
public Constant newConst(final Object cst, boolean isExtend) { if (cst instanceof Integer) { int val = (Integer) cst; return newInteger(val, isExtend); } else if (cst instanceof Float) { float val = (Float) cst; return newFloat(val, isExtend); } else if (cst instanceof Long) { long val = (Long) cst; return newLong(val, isExtend); } else if (cst instanceof Double) { double val = (Double) cst; return newDouble(val, isExtend); } else if (cst instanceof String) { return newString((String) cst); } else if (cst instanceof Type) { Type t = (Type) cst; int s = t.getSort(); if (s == Type.OBJECT) { return newClass(t.getInternalName(), isExtend); } else if (s == Type.METHOD) { return newMethodType(t.getDescriptor(), isExtend); } else {// w w w . ja v a 2s . com return newClass(t.getDescriptor(), isExtend); } } else if (cst instanceof Handle) { Handle h = (Handle) cst; return newHandle(h.getTag(), h.getOwner(), h.getName(), h.getDesc(), h.isInterface(), isExtend); } else { throw new IllegalArgumentException("value " + cst); } }
From source file:com.github.anba.es6draft.compiler.assembler.SimpleTypeTextifier.java
License:Open Source License
@Override public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { buf.setLength(0);//w ww. j a v a 2 s. c o m buf.append(tab2).append("INVOKEDYNAMIC").append(' ').append(name); appendDescriptor(METHOD_DESCRIPTOR, desc); if (bsmArgs.length != 0) { buf.append(" ["); for (int i = 0; i < bsmArgs.length; ++i) { Object arg = bsmArgs[i]; if (arg instanceof String) { appendString(buf, (String) arg); } else if (arg instanceof Type) { Type type = (Type) arg; if (type.getSort() == Type.METHOD) { appendDescriptor(METHOD_DESCRIPTOR, type.getDescriptor()); } else { appendDescriptor(INTERNAL_NAME, type.getDescriptor()); } } else if (arg instanceof Handle) { Handle handle = (Handle) arg; appendDescriptor(HANDLE_DESCRIPTOR, getMethodDescriptor(handle.getDesc())); } else { buf.append(arg); } if (i + 1 < bsmArgs.length) { buf.append(", "); } } buf.append("]"); } buf.append("\n"); text.add(buf.toString()); }
From source file:com.github.veithen.phos.enforcer.ReferenceProcessor.java
License:Apache License
public void processType(Type type, boolean isPublic) { switch (type.getSort()) { case Type.OBJECT: referenceCollector.collectClassReference(new Reference<Clazz>(origin, new Clazz(type.getClassName())), this.isPublic && isPublic); break;/*from ww w . ja v a2 s.c o m*/ case Type.ARRAY: processType(type.getElementType(), isPublic); break; case Type.METHOD: processType(type.getReturnType(), isPublic); for (Type argumentType : type.getArgumentTypes()) { processType(argumentType, isPublic); } } }