Example usage for org.objectweb.asm Opcodes LSTORE

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

Introduction

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

Prototype

int LSTORE

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

Click Source Link

Usage

From source file:com.codename1.tools.translator.bytecodes.VarOp.java

License:Open Source License

public boolean assignFrom(AssignableExpression ex, StringBuilder b) {
    b.append("    /* VarOp.assignFrom */ ");
    switch (opcode) {
    case Opcodes.ISTORE:
        return ex.assignTo("ilocals_" + var + "_", b);

    case Opcodes.LSTORE:
        return ex.assignTo("llocals_" + var + "_", b);
    case Opcodes.FSTORE:
        return ex.assignTo("flocals_" + var + "_", b);
    case Opcodes.DSTORE:
        return ex.assignTo("dlocals_" + var + "_", b);
    case Opcodes.ASTORE: {
        StringBuilder sb = new StringBuilder();
        sb.append("locals[").append(var).append("].type=CN1_TYPE_INVALID;");
        boolean res = ex.assignTo("locals[" + var + "].data.o", sb);
        if (!res) {
            return false;
        }// www .  j  a  v a2 s . c  om
        sb.append("locals[").append(var).append("].type=CN1_TYPE_OBJECT;");
        b.append(sb);
        return true;
    }

    }
    b.append("\n");
    return false;
}

From source file:com.codename1.tools.translator.bytecodes.VarOp.java

License:Open Source License

public boolean assignFrom(CustomInvoke ex, StringBuilder b) {
    b.append("    /* VarOp.assignFrom */ ");
    StringBuilder sb = new StringBuilder();
    switch (opcode) {
    case Opcodes.ISTORE:
        if (ex.appendExpression(sb)) {
            b.append("ilocals_").append(var).append("_ = ").append(sb.toString().trim()).append(";\n");
            return true;
        }/* ww  w  .j  av a2 s.  c  om*/
        break;

    case Opcodes.LSTORE:
        if (ex.appendExpression(sb)) {
            b.append("llocals_").append(var).append("_ = ").append(sb.toString().trim()).append(";\n");
            return true;
        }
        break;
    case Opcodes.FSTORE:
        if (ex.appendExpression(sb)) {
            b.append("flocals_").append(var).append("_ = ").append(sb.toString().trim()).append(";\n");
            return true;
        }
        break;

    case Opcodes.DSTORE:
        if (ex.appendExpression(sb)) {
            b.append("dlocals_").append(var).append("_ = ").append(sb.toString().trim()).append(";\n");
            return true;
        }
        break;

    case Opcodes.ASTORE: {
        StringBuilder sb2 = new StringBuilder();
        //sb2.append("locals[").append(var).append("].type=CN1_TYPE_INVALID; ");
        if (ex.appendExpression(sb)) {
            sb2.append("locals[").append(var).append("].data.o = ").append(sb.toString().trim()).append(";");
            sb2.append("locals[").append(var).append("].type=CN1_TYPE_OBJECT;");
            b.append(sb2);
            return true;
        }

        break;

    }

    }
    //b.append("\n");
    return false;
}

From source file:com.codename1.tools.translator.bytecodes.VarOp.java

License:Open Source License

@Override
public void appendInstruction(StringBuilder b) {
    b.append("    ");
    switch (opcode) {
    case Opcodes.ILOAD:
        b.append("(*SP).type = CN1_TYPE_INT; /* ILOAD */ \n" + "    (*SP).data.i = ilocals_");
        b.append(var);
        b.append("_; \n    SP++;\n");
        return;//  w w  w  . ja  v  a2 s.  c  o  m
    case Opcodes.LLOAD:
        b.append("BC_LLOAD(");
        break;
    case Opcodes.FLOAD:
        b.append("BC_FLOAD(");
        break;
    case Opcodes.DLOAD:
        b.append("BC_DLOAD(");
        break;
    case Opcodes.ALOAD:
        b.append("BC_ALOAD(");
        break;
    case Opcodes.ISTORE:
        b.append("BC_ISTORE(");
        break;
    case Opcodes.LSTORE:
        b.append("BC_LSTORE(");
        break;
    case Opcodes.FSTORE:
        b.append("BC_FSTORE(");
        break;
    case Opcodes.DSTORE:
        b.append("BC_DSTORE(");
        break;
    case Opcodes.ASTORE:
        b.append("BC_ASTORE(");
        break;
    case Opcodes.RET:
        b.append("/* RET TODO */");
        //b.append("goto label_");
        //b.append(var);
        //b.append("; /* RET */\n");
        return;
    case Opcodes.SIPUSH:
    case Opcodes.BIPUSH:
        b.append("PUSH_INT(");
        break;
    case Opcodes.NEWARRAY:
        switch (var) {
        case 4: // boolean
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_BOOLEAN, sizeof(JAVA_ARRAY_BOOLEAN), 1));\n");
            break;
        case 5: // char
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_CHAR, sizeof(JAVA_ARRAY_CHAR), 1));\n");
            break;
        case 6: // float
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_FLOAT, sizeof(JAVA_ARRAY_FLOAT), 1));\n");
            break;
        case 7: // double
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_DOUBLE, sizeof(JAVA_ARRAY_DOUBLE), 1));\n");
            break;
        case 8: // byte
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_BYTE, sizeof(JAVA_ARRAY_BYTE), 1));\n");
            break;
        case 9: // short
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_SHORT, sizeof(JAVA_ARRAY_SHORT), 1));\n");
            break;
        case 10: // int
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_INT, sizeof(JAVA_ARRAY_INT), 1));\n");
            break;
        case 11: // long 
            b.append(
                    "PUSH_OBJ(allocArray(threadStateData, POP_INT(), &class_array1__JAVA_LONG, sizeof(JAVA_ARRAY_LONG), 1));\n");
            break;
        }
        return;
    default:
        throw new RuntimeException("Missing opcode: " + opcode);
    }
    b.append(var);
    b.append(");\n");
}

From source file:com.geeksaga.light.profiler.util.ASMUtil.java

License:Apache License

public static VarInsnNode createLSTORE(LocalVariableNode localVariableNode) {
    return new VarInsnNode(Opcodes.LSTORE, localVariableNode.index);
}

From source file:com.github.anba.es6draft.compiler.assembler.InstructionAssembler.java

License:Open Source License

private void store(int var, Type type) {
    assert var >= 0;
    variables.activate(var);
    switch (type.getOpcode(Opcodes.ISTORE)) {
    case Opcodes.ISTORE:
        istore(var);
        return;//w ww. j  a  v a 2  s.  co  m
    case Opcodes.LSTORE:
        lstore(var);
        return;
    case Opcodes.FSTORE:
        fstore(var);
        return;
    case Opcodes.DSTORE:
        dstore(var);
        return;
    case Opcodes.ASTORE:
        astore(var);
        return;
    default:
        throw new IllegalArgumentException();
    }
}

From source file:com.github.anba.es6draft.compiler.assembler.InstructionAssembler.java

License:Open Source License

private void lstore(int var) {
    methodVisitor.visitVarInsn(Opcodes.LSTORE, var);
    stack.lstore(var);
}

From source file:com.google.devtools.build.android.desugar.BytecodeTypeInference.java

License:Open Source License

@Override
public void visitVarInsn(int opcode, int var) {
    switch (opcode) {
    case Opcodes.ILOAD:
        push(InferredType.INT);//  ww w  .j a v a 2 s  . c  o m
        break;
    case Opcodes.LLOAD:
        push(InferredType.LONG);
        push(InferredType.TOP);
        break;
    case Opcodes.FLOAD:
        push(InferredType.FLOAT);
        break;
    case Opcodes.DLOAD:
        push(InferredType.DOUBLE);
        push(InferredType.TOP);
        break;
    case Opcodes.ALOAD:
        push(getLocalVariableType(var));
        break;
    case Opcodes.ISTORE:
    case Opcodes.FSTORE:
    case Opcodes.ASTORE: {
        InferredType type = pop();
        setLocalVariableTypes(var, type);
        break;
    }
    case Opcodes.LSTORE:
    case Opcodes.DSTORE: {
        InferredType type = pop(2);
        setLocalVariableTypes(var, type);
        setLocalVariableTypes(var + 1, InferredType.TOP);
        break;
    }
    case Opcodes.RET:
        throw new RuntimeException("The instruction RET is not supported");
    default:
        throw new RuntimeException("Unhandled opcode " + opcode);
    }
    super.visitVarInsn(opcode, var);
}

From source file:com.google.devtools.build.wireless.testing.java.injector.TimeServant.java

License:Apache License

/**
 * Stores a negative timestamp of the current time into a specific position of
 * the stack.//w  ww .jav  a2  s .  c  om
 * 
 * <p>The time at the end of the computation is going to be added to this 
 * value.
 * 
 * @param indexInStack The index in the method's stack where to save the time.
 * @throws IllegalArgumentException If the index is negative.
 */
public void startCountingTime(int indexInStack) {
    if (indexInStack < 0) {
        throw new IllegalArgumentException("index in stack must be >= 0");
    }
    loadCurrentTimeMillis();
    mv.visitInsn(Opcodes.LNEG);
    mv.visitVarInsn(Opcodes.LSTORE, indexInStack);
}

From source file:com.google.devtools.build.wireless.testing.java.injector.TypeDescriptorTest.java

License:Apache License

/**
 * Test method for {@link TypeDescriptor#getStoreOpcode()}.
 *///from  ww w. j  av  a  2 s .  c om
public void testGetStoreOpcode() {
    try {
        TypeDescriptor.VOID.getStoreOpcode();
        fail("Void should have thrown an exception!");
    } catch (IllegalStateException e) {
        // OK!
    }
    assertEquals("Wrong STORE instruction", Opcodes.ISTORE, TypeDescriptor.BOOLEAN.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.ISTORE, TypeDescriptor.BYTE.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.ISTORE, TypeDescriptor.CHAR.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.ISTORE, TypeDescriptor.SHORT.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.ISTORE, TypeDescriptor.INTEGER.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.LSTORE, TypeDescriptor.LONG.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.FSTORE, TypeDescriptor.FLOAT.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.DSTORE, TypeDescriptor.DOUBLE.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.ASTORE, TypeDescriptor.CLASS.getStoreOpcode());
    assertEquals("Wrong STORE instruction", Opcodes.ASTORE, TypeDescriptor.ARRAY.getStoreOpcode());
}

From source file:com.google.test.metric.asm.MethodVisitorBuilder.java

License:Apache License

public void visitVarInsn(final int opcode, final int var) {
    switch (opcode) {
    case Opcodes.ILOAD:
        load(var, JavaType.INT);
        break;//from   w  w  w . j av  a  2 s. c  o m
    case Opcodes.LLOAD:
        load(var, JavaType.LONG);
        break;
    case Opcodes.FLOAD:
        load(var, JavaType.FLOAT);
        break;
    case Opcodes.DLOAD:
        load(var, JavaType.DOUBLE);
        break;
    case Opcodes.ALOAD:
        load(var, JavaType.OBJECT);
        break;

    case Opcodes.ISTORE:
        store(var, JavaType.INT);
        break;
    case Opcodes.LSTORE:
        store(var, JavaType.LONG);
        break;
    case Opcodes.FSTORE:
        store(var, JavaType.FLOAT);
        break;
    case Opcodes.DSTORE:
        store(var, JavaType.DOUBLE);
        break;
    case Opcodes.ASTORE:
        store(var, JavaType.OBJECT);
        break;

    case Opcodes.RET:
        recorder.add(new Runnable() {
            public void run() {
                block.addOp(new RetSub(lineNumber));
            }
        });
        break;
    default:
        throw new UnsupportedOperationException("opcode: " + opcode);
    }
}