public void breakpoint() { addInstruction(0, TypeDesc.VOID, Opcode.BREAKPOINT); } }
public void arrayLength() { addInstruction(0, TypeDesc.INT, Opcode.ARRAYLENGTH); }
public void throwObject() { addInstruction(-1, TypeDesc.VOID, Opcode.ATHROW); }
public void monitorExit() { addInstruction(-1, TypeDesc.VOID, Opcode.MONITOREXIT); }
public void loadNull() { addInstruction(1, null, Opcode.ACONST_NULL); }
public void returnVoid() { addInstruction(0, TypeDesc.VOID, Opcode.RETURN); }
public void monitorEnter() { addInstruction(-1, TypeDesc.VOID, Opcode.MONITORENTER); }
public void nop() { addInstruction(0, TypeDesc.VOID, Opcode.NOP); }
public void loadConstant(float value) { if (value == 0) { addInstruction(1, TypeDesc.FLOAT, Opcode.FCONST_0); } else if (value == 1) { addInstruction(1, TypeDesc.FLOAT, Opcode.FCONST_1); } else if (value == 2) { addInstruction(1, TypeDesc.FLOAT, Opcode.FCONST_2); } else { ConstantInfo info = mCp.addConstantFloat(value); mInstructions.new LoadConstantInstruction(1, TypeDesc.FLOAT, info); } }
private void getfield(int stackAdjust, byte opcode, ConstantInfo info, TypeDesc type) { if (type.isDoubleWord()) { stackAdjust++; } addInstruction(stackAdjust, type, opcode, info); }
public void loadConstant(double value) { if (value == 0) { addInstruction(2, TypeDesc.DOUBLE, Opcode.DCONST_0); } else if (value == 1) { addInstruction(2, TypeDesc.DOUBLE, Opcode.DCONST_1); } else { ConstantInfo info = mCp.addConstantDouble(value); mInstructions.new LoadConstantInstruction(2, TypeDesc.DOUBLE, info, true); } }
public void loadConstant(long value) { if (value == 0) { addInstruction(2, TypeDesc.LONG, Opcode.LCONST_0); } else if (value == 1) { addInstruction(2, TypeDesc.LONG, Opcode.LCONST_1); } else { ConstantInfo info = mCp.addConstantLong(value); mInstructions.new LoadConstantInstruction(2, TypeDesc.LONG, info, true); } }
public void instanceOf(TypeDesc type) { ConstantInfo info = mCp.addConstantClass(type); addInstruction(0, TypeDesc.INT, Opcode.INSTANCEOF, info); }
private void putfield(int stackAdjust, byte opcode, ConstantInfo info, TypeDesc type) { if (type.isDoubleWord()) { stackAdjust -= 2; } else { stackAdjust--; } addInstruction(stackAdjust, TypeDesc.VOID, opcode, info); }
public void checkCast(TypeDesc type) { ConstantInfo info = mCp.addConstantClass(type); addInstruction(0, TypeDesc.VOID, Opcode.CHECKCAST, info); }
addInstruction(1, TypeDesc.INT, op); } else if (-128 <= value && value <= 127) { addInstruction(1, TypeDesc.INT, Opcode.BIPUSH, (byte)value); } else if (-32768 <= value && value <= 32767) { addInstruction(1, TypeDesc.INT, Opcode.SIPUSH, (short)value); } else { ConstantInfo info = mCp.addConstantInteger(value);
addInstruction(stackAdjust, type, op);
addInstruction(stackAdjust, TypeDesc.VOID, op);
addInstruction(stackAdjust, TypeDesc.VOID, op);
public void newObject(TypeDesc type, int dimensions) { if (dimensions <= 0) { // If type refers to an array, then this code is bogus. mInstructions.new NewObjectInstruction(mCp.addConstantClass(type)); return; } TypeDesc componentType = type.getComponentType(); if (dimensions == 1) { if (componentType.isPrimitive()) { addInstruction(0, type, Opcode.NEWARRAY, (byte)componentType.getTypeCode()); return; } addInstruction(0, type, Opcode.ANEWARRAY, mCp.addConstantClass(componentType)); return; } int stackAdjust = -(dimensions - 1); ConstantInfo info = mCp.addConstantClass(type); byte[] bytes = new byte[4]; bytes[0] = Opcode.MULTIANEWARRAY; //bytes[1] = (byte)0; //bytes[2] = (byte)0; bytes[3] = (byte)dimensions; mInstructions.new ConstantOperandInstruction(stackAdjust, type, bytes, info); }