List of usage examples for org.objectweb.asm Opcodes LSTORE
int LSTORE
To view the source code for org.objectweb.asm Opcodes LSTORE.
Click Source Link
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); } }