Example usage for org.objectweb.asm Type METHOD

List of usage examples for org.objectweb.asm Type METHOD

Introduction

In this page you can find the example usage for org.objectweb.asm Type METHOD.

Prototype

int METHOD

To view the source code for org.objectweb.asm Type METHOD.

Click Source Link

Document

The sort of method types.

Usage

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);
        }
    }
}