Example usage for org.objectweb.asm Opcodes INTEGER

List of usage examples for org.objectweb.asm Opcodes INTEGER

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes INTEGER.

Prototype

Integer INTEGER

To view the source code for org.objectweb.asm Opcodes INTEGER.

Click Source Link

Usage

From source file:org.yx.asm.AsmUtils.java

License:Apache License

public static List<Object> getImplicitFrame(String desc) {
    List<Object> locals = new ArrayList<>();
    if (desc.isEmpty()) {
        return locals;
    }/*from  ww  w.j ava 2 s . c  o  m*/
    int i = 0;
    while (desc.length() > i) {
        int j = i;
        switch (desc.charAt(i++)) {
        case 'Z':
        case 'C':
        case 'B':
        case 'S':
        case 'I':
            locals.add(Opcodes.INTEGER);
            break;
        case 'F':
            locals.add(Opcodes.FLOAT);
            break;
        case 'J':
            locals.add(Opcodes.LONG);
            break;
        case 'D':
            locals.add(Opcodes.DOUBLE);
            break;
        case '[':
            while (desc.charAt(i) == '[') {
                ++i;
            }
            if (desc.charAt(i) == 'L') {
                ++i;
                while (desc.charAt(i) != ';') {
                    ++i;
                }
            }
            locals.add(desc.substring(j, ++i));
            break;
        case 'L':
            while (desc.charAt(i) != ';') {
                ++i;
            }
            locals.add(desc.substring(j + 1, i++));
            break;
        default:
            break;
        }
    }

    return locals;
}

From source file:org.yx.asm.ProxyMethodWritor.java

License:Apache License

private static int load(MethodVisitor mv, Object type, int frameIndex) {
    if (Opcodes.INTEGER.equals(type)) {
        mv.visitVarInsn(ILOAD, frameIndex);
        return frameIndex + SINGLE;
    }/* w w  w. j a  v  a2  s  .  c o  m*/
    if (Opcodes.LONG.equals(type)) {
        mv.visitVarInsn(LLOAD, frameIndex);
        return frameIndex + WIDTH;
    }
    if (Opcodes.FLOAT.equals(type)) {
        mv.visitVarInsn(FLOAD, frameIndex);
        return frameIndex + SINGLE;
    }
    if (Opcodes.DOUBLE.equals(type)) {
        mv.visitVarInsn(DLOAD, frameIndex);
        return frameIndex + WIDTH;
    }
    mv.visitVarInsn(ALOAD, frameIndex);
    return frameIndex + SINGLE;
}

From source file:org.yx.asm.ProxyMethodWritor.java

License:Apache License

private static void store(MethodVisitor mv, Object type, int frameIndex) {
    if (Opcodes.INTEGER.equals(type)) {
        mv.visitVarInsn(ISTORE, frameIndex);
    } else if (Opcodes.LONG.equals(type)) {
        mv.visitVarInsn(LSTORE, frameIndex);
    } else if (Opcodes.FLOAT.equals(type)) {
        mv.visitVarInsn(FSTORE, frameIndex);
    } else if (Opcodes.DOUBLE.equals(type)) {
        mv.visitVarInsn(DSTORE, frameIndex);
    } else {/*from   ww  w  . j  a  v a2  s  .com*/
        mv.visitVarInsn(ASTORE, frameIndex);
    }
}

From source file:org.yx.asm.ProxyMethodWritor.java

License:Apache License

private static void jReturn(MethodVisitor mv, Object type) {
    if (Opcodes.INTEGER.equals(type)) {
        mv.visitInsn(IRETURN);//from  w w w.j a  va 2 s.com
    } else if (Opcodes.LONG.equals(type)) {
        mv.visitInsn(LRETURN);
    } else if (Opcodes.FLOAT.equals(type)) {
        mv.visitInsn(FRETURN);
    } else if (Opcodes.DOUBLE.equals(type)) {
        mv.visitInsn(DRETURN);
    } else {
        mv.visitInsn(ARETURN);
    }
}